Excel (vba) - Enregistrer avec conditions

Résolu/Fermé
Brandysve Messages postés 55 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 16 février 2017 - 7 oct. 2013 à 10:11
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 - 7 oct. 2013 à 12:03
Bien le bonjour !

Dernièrement j'ai fais un petit fichier excel avec une macro qui ouvre une boite de dialogue demandant certaines informations, etc... Après ça, le fichier s'enregistre lui-même à un emplacement en fonction d'une valeur inscrite dans la cellule E1.

Cependant, ce numéro varie de 00001 à 15000 et les fichiers sont enregistré en fonction de cette données (soit 00001.xls - 15000.xls). Lorsque le fichier comporte des 0 devant des nombres, il n'en tient pas compte à l'enregistrement (ex. 09989 devient 9989.xls).
Du coup j'ai rajouté dans la macro d'enregistrer en "\0". Ce qui me donne un bon résultat pour tous les nombres inférieur à 10000 mais après quoi j'ai des 010000.xls.

Possibilité de mettre une condition if else qui détermine si le nombre est inférieur à 10000 mettre un 0 devant sinon rien mettre et enregistrer tel quel?

Merci à ceux qui prendront la patience de lire et m'aider à résoudre ce petit souci.

Brandysve

Ps : si besoin je peux fournir le code macro
A voir également:

3 réponses

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
7 oct. 2013 à 11:07
Bonjour,

tu peux tout à fait faire ca.

Tu as deux possibilités (car tout dépend de comment tu demandes à l'utilisateur de rentrer :

IF variable(1à15000) < 10000 then
variable = "\0" & variable
else
variable = variable
end if

ou alors

if len(variable) < 5 'si le nombre de caractèr einclus dans la variable variable = 5 (soit compris <10000 then

variable = "\0" & variable

end if
1
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
7 oct. 2013 à 12:03
Bonjour,

essaie comme ca :

Private Sub Workbook_Open()
Dim save_ener As String
UserForm1.Show
save_ener = Range("E1")
If save_ener < 10000 Then
save_ener = "\0" & save_ener
Else
save_ener = "\" & save_ener
End If
Range("A6").Select
fichier = "C:\Users\(caché)\En attente" & save_ener & ".xls"
ActiveWorkbook.SaveAs Filename:=fichier
End Sub
1
Brandysve Messages postés 55 Date d'inscription lundi 7 octobre 2013 Statut Membre Dernière intervention 16 février 2017 5
Modifié par Brandysve le 7/10/2013 à 11:42
Même cela semble logique, ça ne fonctionne pas :/
Quand j'enregistre sous 10000 il met bien "09999.xls" mais quand je met plus de 10000, il me crée un fichier "Enattente11000.xls"

Voilà mes codes
1. La macro d'ouverture
Private Sub Workbook_Open()
Dim save_ener As String
UserForm1.Show
save_ener = Range("E1")
If save_ener < 10000 Then
save_ener = "\0" & save_ener
Else
save_ener = save_ener
End If
Range("A6").Select
fichier = "C:\Users\(caché)\En attente" & save_ener & ".xls"
ActiveWorkbook.SaveAs Filename:=fichier
End Sub

2. Le Useform1
Private Sub annuler_Click()
Unload UserForm1
End Sub

Private Sub CommandButton1_Click()
Range("E1") = Me.TextBox1.Value
Range("D2") = Me.TextBox2.Value
Range("B6") = Me.TextBox3.Value
Unload UserForm1
End Sub

Merci de ton aide

Ps: Ta seconde solution n'est pas viable dans mon cas car il y 'a toujours 5 caractères (avant 10000 on écrit 09000 par exemple, cependant, dans la cellule ça se transforme, volontairement, en 09.000 et ça doit pas enregistrer avec le point))
0