Excel (vba) - Enregistrer avec conditions [Résolu/Fermé]

Signaler
Messages postés
55
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
16 février 2017
-
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
-
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

3 réponses

Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
127
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
127
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
55
Date d'inscription
lundi 7 octobre 2013
Statut
Membre
Dernière intervention
16 février 2017
5
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))