Fusion de macros

Q

Quaisako

Guest
Bonsoir à tous,

et merci d'avance, pour votre aide.

J'ai deux macros. Macro1 et macro2.

Macro1 fonctionne parfaitement. (Merci Thierry).
Elle me permet de sauvegarder des factures dans : C:\mes factures\"Dossier au nom du client"\N° de facture.xls

'Enregistre la facture dans un répertoire dédié au nom du client.
Sub Enregistrement()
Dim nom_Fichier As String
Dim Nom_Client As String
Dim Num_Facture As String
On Error GoTo Sortie

Num_Facture = Range("G12")
Nom_Client = Range("F18")
nom_Fichier = "Facture" & Num_Facture & ".xls"

Sheets("Facture").Copy
ChDir "C:\mes factures\" & Nom_Client & "\"
ActiveWorkbook.SaveAs Filename:=nom_Fichier
ActiveWorkbook.Close

Exit Sub

Sortie:
MsgBox "Répertoire Client" & Nom_Client & "Introuvable"
________________________________

J'ai récupéré sur le Net macro2.
Cette dernière est censée tester si le dossier du client dans lequel je dois sauvegarder la facture, existe.
S'il n'existe pas, macro2 le crée.

Sub SaveInMyFolder()
Dim x As String, strPath As String
On Error
Resume Next
strPath = "c:\mes factures"
x =
GetAttr(strPath) And 0
If Err <> 0 Then
MkDir strPath
End If

ActiveWorkbook.SaveAs FileName:=strPath & "\" & ActiveWorkbook.Name
End Sub
____________________
Question : Comment fusionner ces deux macros?

Quaisako
 
T

Thierry

Guest
Salut Quaisako

Vite fait avant d'aller dormir... ce devrait donner un truc comme çà :

L'expression MkDir est a vérifier... car sur l'aide on dirait qu'elle peut créer des répertoires sur le lecteur courant... et je n'ai pas vraiment chercher pour spécifier... (Le path avec le lecteur est dans la variable strPath)


Sub Enregistrement()
Dim Nom_Fichier As String
Dim Nom_Client As String
Dim Num_Facture As String
Dim x As String, strPath As String
On Error Resume Next

Num_Facture = Range("A1")
Nom_Client = Range("A2")
Nom_Fichier = "Facture" & Num_Facture & ".xls"
strPath = "C:\mes factures\" & Nom_Client

x = GetAttr(strPath) And 0
If Err <> 0 Then
MkDir strPath
End If

Sheets("Facture").Copy
ActiveWorkbook.SaveAs Filename:=strPath & "\" & Nom_Fichier
ActiveWorkbook.Close
End Sub
 
Q

Quaisako

Guest
Bonjour Thierry,

Etre opérationnel à "minuit et des bananes" : Chapeau!!!!

Ta macro est impeccable.

Je vois que tu utilises énormément l'aide. J'y ai souvent recours, mais j'ai encore énormément de difficultés avec les termes "procédure, variable, argument.......etc.

Je progresse à pas de fourmis.

Merci encore et à bientôt pour de nouvelles aventures.

Quaisako
 
T

Thierry

Guest
Hello Quaisako, bonjour tout le monde

Ben oui l'aide est la source première pour y comprendre quelque chose en VBA... Ma Touche « F1 » est la toute "noire" !!

(La Touche F1 est la clef de mon savoir, par contre depuis hier je me rends compte que çà semble tellement évident pour les habitués VBA, qu'on oublie de le préciser aux débutants...)
Donc rappel : sur n'importe quel module pointer le curseur sur un terme de code VBA et appuyez sur F1...

Pour comprendre les termes "procédure, variable, argument.......etc." il faut tout de même avoir quelques bases générales, un bouquin de poche sur VBA peut être utile pour démarrer, et si on aime pas les bouquins pas mal de sites offres des bases... (Voir les liens que David a mis en ligne sur site)

Un autre truc pour bien assimiler comment le VBA fonctionne est de savoir utiliser les objets et de connaître leur « hiérarchie » et de savoir en faire des « collections ». En tapant OBJET dans l’aide de VBA , tu devrais avoir « Objets Microsoft Excel », là une sorte d’organigramme interactif qui te permettra d’en savoir plus.

Et il faut aussi une dose d’audace… Dans cet exemple de deux macro à fusionner… Il faut faire des essaies, tu serais peut-être arrivé tout seul…

Moi qu’est-ce que j’ai fait à ton avis ? J’ai copié les deux sous routines, et j’ai analysé :
1) Les nouvelles Variables (strPath et x)
2) Les nouvelles Expressions (GetAttr et MkDir) (F1 en étant dessus)

Un fois que j’avais ces infos je n’ai fait que mettre dans l’ordre d’exécution toutes les instructions…

J’avais juste un doute pour MkDir comme décrit ci-dessus puisque c’est la première fois que je l’utilise.
Heureux que çà marche et que çà te convienne…

PS tant que je t’ai au bout d’une ficelle Quaisako, pour un GDBD d’exemple je n’ai pas eu le temps, car en fait il y a plus d’Access que d’Excel dans mes fichiers « test » mais si je tombe sur un exemple je te l’enverrai… Mais en fait je vois que tu t’orientes vers une solution de fichiers séparés, donc peut-être tu n’en as plus besoin.

Bon App
@+Thierry
 

Discussions similaires

Réponses
6
Affichages
326
Réponses
3
Affichages
247

Statistiques des forums

Discussions
314 078
Messages
2 105 468
Membres
109 375
dernier inscrit
anderson2