Enregistrer avec plusieurs destination selon valeur

Résolu
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 22 mars 2012 à 15:46
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 25 mars 2012 à 20:44
Bonjour, à tous et à toutes
Voila malgré déjà un post à se sujet.
Je ne suis toujours pas parvenu à faire la macro que je veux
Cette macro fonctionne bien pour seulement une destination, cependant j’ai un bouton formulaire dans mon classeur auquel est rattachée cette macro
Donc dans l’ordre quand j’ouvre mon classeur j’ai un formulaire de saisie qui s’affiche dans lequel j’ai un Combobox1 qui renvoie le choix effectué sur la liste dans ma feuille
La liste du combobox1 comporte 4 noms Christian, David, Denis, Stéphane, alors j’aimerais que quand Christian sélectionne son nom et fait des saisies dans le formulaire, au moment d’appuyer sur le bouton enregistrer sous l’action de la macro s’effectue avec le chemin 1, par contre si David est sélectionné la macro prend le chemin 2 qui correspond à ce nom etc…. malgré l’aide déjà reçu je n’arrive toujours pas à faire ma macro.
2eme question la ligne de commande en bas du code me permet de vérifier l’existence du dossier si oui il existe me demande de sauvegarder par dessus, cependant j'aimerais garder le dossier mais accepter simplement de sauvegarder le classeur même si il existe déjà
Merci pour votre aide


Sub Enregistrement()
' macro pour sauvegarder sous a l'aide d'un bouton formulaire

' les trois variables
Dim Chemin1, Client, Fichier
'1er variable emplacement du futur dossier
Chemin1 = "C:\Users\GRANBY2\Documents"
'2eme variable nom du dossier
Client = Range("F6")
' 3eme variable nom du fichier excel
Fichier = Range("F7")
If Dir(Chemin1 & Client, 16) = "" Then MkDir Chemin1 & Client

ActiveWorkbook.SaveAs Chemin1 & Client & "" & Fichier

End Sub

21 réponses

cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 15:59
Bonjour,
Pour enregistrer suivant personne c'est simple
mettre ce code dans le bouton d'enregistrement:

If ComboBox1.Value = "David" Then
 ActiveWorkbook.SaveAs Filename:= _
        chemin1, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
ElseIf ComboBox1.Value = "Denis" Then
 ActiveWorkbook.SaveAs Filename:= _
       chemin2, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False

je te laisse faire le 2 autres


@+ Le Pivert
3
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 16:00
tu termines par End If bien entendu!


Le Pivert
3
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 17:11
Exemple pour un nom et un chemin

Sub Enregistrement()
' macro pour sauvegarder sous a l'aide d'un bouton formulaire

' les trois variables
Dim Chemin1, Client, Fichier
'1er variable emplacement du futur dossier
Chemin1 = "C:\Users\GRANBY2\Documents"
'2eme variable nom du dossier
Client = Range("F6")
' 3eme variable nom du fichier excel
Fichier = Range("F7")
Chemin1 = Chemin1 & Client & "" & Fichier
If ComboBox1.Value = "Christian" Then
 ActiveWorkbook.SaveAs Filename:= _
        chemin1, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False

etc...
End Sub



@+Le Pivert
3
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 17:47
Je pense à une chose:
Fichier = Range("E5")
finit-il par .xls sinon il faut mettre:
Chemin1 = Chemin1 & Client & "" & Fichier & ".xls"

Dans l'exemple ci-dessus tu as mis 2 fois chemin2!!
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 17:51
Et puis tu n'as pas déclaré les chemins 2 et 3 ni leurs chemins!!!!
Dim Chemin1, Chemin2, Chemin3, Client, Fichier As String

Chemin2 = Chemin2 & Client & "" & Fichier & ".xls"
Chemin3 = Chemin3 & Client & "" & Fichier & ".xls"





Le Pivert
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 17:51
Salut, Le Pivert,
Il a surtout défini Chemin1 complètement, mais n'a rien fait pour chemin2 et chemin3
Et cette ligne ... me fait souffrir :
Dim Chemin1, Client, Fichier


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 18:20
Quelle erreur ? (on la précise, sur ce forum technique !)
Une erreur sur cette ligne ne pourrait avoir que deux raisons possibles :
raison1 : tu n'as pas de combobox ainsi nommée
raison 2 : ton code est dans un module qui ne correspond pas à celui qui contient cette combo


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 18:32
Il est vraiment regrettable que tu te contentes de dire "j'ai une erreur" !
Il nous faut deviner ?
Je vais interroger mon petit doigt ... attends .....
"Ah ? comment ? parle plus fort"
"Ah ? tu crois qu'il aurait une erreur 424 ? et qu'il aurait mis ce code dans un module de macros alors que sa combo se trouve ailleurs ? Hein ... parle plus fort ...)
"Ah , il aurait alors du mettre, si sur feuil1, par exemple, Sheets(Feruil1).combobox1 ?".
Bon ... que penses-tu de mon petit doigt ? Il me parait plus précis que tu ne sais l'être, hein ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
cs_Le Pivert Messages postés 7822 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 16 septembre 2022 133
23 mars 2012 à 19:08
Dans mon dernier message je t'avais mis cela tu n'en as pas tenu compte.

Dim Chemin1, Chemin2, Chemin3, Client, Fichier As String

Chemin2 = Chemin2 & Client & "" & Fichier & ".xls"
Chemin3 = Chemin3 & Client & "" & Fichier & ".xls"

Ensuite tes prénoms dans ta 1ère demande avaient une majuscule, dans ton code il n'y a pas de majuscule. Tous cela peut indiquer une erreur. il faudrait chercher par toi même. tu as tout les ingrédients!!!!!!!!!!!!

Le Pivert
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 19:20
C'est en fait :
Dim Chemin1 as string, Chemin2 as string, Chemin3 as string, Client as string, Fichier As String 

(sinon, seul Fichier est typé en string. C'est ainsi que fonctionne VB).
Quant l'autre erreur : elle est plus grave, car de compréhension des fondements mêmes.
Et ce n'est pas la première fois ! Pour preuve :
Tapez le texte de l'url ici.
où il lui avait bien été précisé cette nécessité de dire où se troouve le contrôle, lorsqu'on s'en sert depuis un autrre module :
Pour mémoire :
la notion de contenir n'est peut etre pas exacte,
c'est juste pour comprendre le fonctionnement.
Code Visual Basic :
Sheets("NomOnglet").MonImage.Picture
= LoadPicture(CheminDeImage & FichierName & ".jpg")

Mais ce qui m'irrite le plus reste de loin cette habitude de se contenter de dire "j'ai une erreur" sans même prendre la peine de la préciser ! Cer n'est pas sérieux !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 19:22
Et je viens de lire ton dernier message, centrino !
Et toujours pas de précision en ce qui concerne l'erreur.
Alors : "sarcasme", dis-tu ? ===>>> non ===>> limite dans la tolérance, car il y a abus !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 19:57
Et voilà que nous apprenons (enfin) :*
- que ta combo se trouve sur ton UserForm UserForm1
- que l'erreur est bien (mon petit doigt n'est donc pas un imbécile) que l'erreur est l'erreur 424 "objet requis". Bravo !
Et alors, dans le code donné (forcément en aveugle, grâce à tes "précisions") par LePivert :
tu dois te référer à :
UserForm1.combobox1 et non simplement à Combobox1,si (comme je le pense, mais que tu ne l'as toujours pas précisé), ta macro est dans un module distinct de celui de ton Userform.
OK ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 17:00
Bonjour Pivert merci pour ton aide j'ai essayé de mettre ton code à la suite du mien et cela ne marche pas, j'ai essayé avant le mien toujours le même problème.
Comme tu le remarque j'ai du mal à l'intégrer à mon code
que dois-je faire ou comment faire, merci pour ton aide
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 17:25
Merci beaucoup pour votre aide Pivert
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 17:38
Et oui Pivert encore moi je pensais avoir bien compris mais non il me renvoie toujours une erreur
Je suis désolé de ne pas comprendre ou cela ne fonctionne pas
merci d'avance
Sub test_save()
'
' macro pour sauvegarder sous a l'aide d'un bouton formulaire

' les trois variables
Dim Chemin1, Client, Fichier
'1er variable emplacement du futur dossier
Chemin1 = "C:\Users\GRANBY2\Documents"
Chemin2 = "C:\Users\GRANBY2\Images"
Chemin3 = "C:\Users\GRANBY2\Musique"
'2eme variable nom du dossier
Client = Range("E7")
' 3eme variable nom du fichier excel
Fichier = Range("E5")
Chemin1 = Chemin1 & Client & "" & Fichier

If ComboBox1.Value = "david" Then
 ActiveWorkbook.SaveAs Filename:= _
        Chemin1, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
        
ElseIf ComboBox1.Value = "denis" Then
 ActiveWorkbook.SaveAs Filename:= _
       Chemin2, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
        
ElseIf ComboBox1.Value = "christian" Then
 ActiveWorkbook.SaveAs Filename:= _
       Chemin2, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
End If
End Sub
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 18:05
Sub test_save()
'
' macro pour sauvegarder sous a l'aide d'un bouton formulaire

' les trois variables
Dim Chemin1, Client, Fichier
'1er variable emplacement du futur dossier
Chemin1 = "C:\Users\GRANBY2\Documents"
Chemin2 = "C:\Users\GRANBY2\Images"
Chemin3 = "C:\Users\GRANBY2\Musique"
'2eme variable nom du dossier
Client = Range("E7")
' 3eme variable nom du fichier excel
Fichier = Range("E5")
Chemin1 = Chemin1 & Client & "" & Fichier & ".xls"
Chemin2 = Chemin1 & Client & "" & Fichier & ".xls"
Chemin3 = Chemin1 & Client & "" & Fichier & ".xls"

If ComboBox1.Value = "david" Then
 ActiveWorkbook.SaveAs Filename:= _
        Chemin1, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
        
ElseIf ComboBox1.Value = "denis" Then
 ActiveWorkbook.SaveAs Filename:= _
       Chemin2, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
        
ElseIf ComboBox1.Value = "christian" Then
 ActiveWorkbook.SaveAs Filename:= _
       Chemin3, FileFormat _
        :=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
        False, CreateBackup:=False
End If
End Sub

Après quelque modification voila ce que j'ai
cependant le message d'erreur me renvoie toujours à la ligne (If ComboBox1.Value = "david" Then)
merci
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 18:10
Merci messieurs j'ai donc déclaré tous les chemins mais me renvoie toujours la même erreur de débogage sur la ligne(If ComboBox1.Value = "david" Then)
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 19:16
Bonjour monsieur Ucfoutu veuillez m’excuser d’avoir simplement indiqué, comme vous l’avait si bien mentionné "j'ai une erreur"
Je tiens aussi par la même occasion à vous féliciter car effectivement je sais reconnaître une personne qui maitrise comme vous le sarcasme.
Malgré tous cela, je tiens à dire que je n’ais pas la change comme vous de maitriser aussi bien Excel et le langage VBA.
Grand néophyte en la matière, je cherche et adapte, parfois sur des forums je pose des questions suscitant l’aide de personne compétente
Donc en ce qui vous concerne merci pour votre cérébralité ainsi qu’à celle de votre petit doigt
0
centrino34 Messages postés 22 Date d'inscription samedi 6 novembre 2010 Statut Membre Dernière intervention 25 mars 2012
23 mars 2012 à 19:42
donc pour satisfaire à ta demande voila
A l'ouverture de mon classeur mon UserForm1 s'ouvre avec dans celui-ci ma comBobox1 qui me permet de faire le choix du prénom par la suite le choix du prénom effectué il me renvoie le valeur sur la feuille
Private Sub ComboBox1_Change()
Feuil2.Range("E6") = UserForm1.ComboBox1
End Sub

Sur la feuille 2 j'ai un bouton save as que j'ai relié à un module dans lequel j'ai le code (Sub Test save())
Donc oui j'ai bien une erreur 424, donc j'ai essayé la raison 2 que tu m'a donné placer le code dans la combobox1 mais toujours rien.
Donc ma combobox1 me permet de faire le choix ensuite le nom inscrit en E6 sur feuille2
je clic sur mon bouton save as et toujours erreur 424
voila
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
23 mars 2012 à 20:03
A Le Pivert ==>>
Désolé d'avoi eu à intervenir.
Je tiens à te dire que ton code est juste et justifié et que rien ne te permettait d'y voir plus clair. Tu n'es en rien responsable de cette perte de temps.
Je te laisse maintenant continuer.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0