Remplir automatiquement un bon pour chaque nouvelle commande
Bonjour,
Malgré mes recherches sur le site, mais ne sachant pas exactement ce que je cherche (en tous cas quel nom mettre dessus) je soumets mon problème dans une nouveau post.
Bien évidemment, je suis preneur d’un ou plusieurs lien vers de posts (ou autre) traitant du sujet.
Pour faire simple,
J’ai un premier feuillet dans lequel se trouvent mes données de commande, une ligne par entrée, une colonne par critère (commande, nom, prénom, date, prix…).
Dans le second feuillet, j’ai un formulaire dans lequel je renseigne mon numéro de commande et le formulaire se renseigne automatiquement par rechercheV dans le feuillet 1.
CE QUE JE SOUHAITE FAIRE AVEC UNE VBA :
1) Feuillet : « Commande », Colonne : « Traitement » : Tester sur la première ligne sur le contenu est « X », SI OUI passer à ligne suivante et exécuter le même test, SI NON, copier le contenu de la colonne Numéro de la commande (colonne A) >>> SI LE CONTENU DE LA COLONNE A EST VIDE C’EST QUE TOUTES LES COMMANDES AIENT ETE TRAITER, LA MACRO S’ARRETE.
2) Feuillet : « Bon de commande », cellule B2 : Coller le contenu copier sur le feuillet commande (le numéro de commande)
3) Le bon de commande se rempli automatiquement
4) Optionnel : Tester les cellules (vérifier que les RECHERCHEV en B4 et suivante ne renvoient pas #N/A)
5) Enregistrer le fichier au format PDF en le nommant avec le contenu de la cellule C2 du feuillet « Bon de commande »
6) Feuillet : « Commande », Colonne : « Traitement » : Remplir la cellule de la commande qui vient d’être traitée « X » et revenir à l’étape 1.
J’ai déjà trouvé comment enregistrer au bon format et au bon nom (Etape 5), je ne sais pas si mon code des bon :
Sub EnregistrerPDF()
Dim vNomFichier As String
vNomFichier = Trim([C2])
Sheets("Bon de commande").Copy
ChDir "destination du fichier"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
vNomFichier, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End SubD'avance merci pour votre aide !!!
Salut,
Après Sébastien, laisse-moi également te souhaiter la bienvenue sur le Forum
Normalement la macro inscrite dans le fichier ci-joint devrait répondre à ta demande.
Option Explicit
Sub Traiter_commandes_en_suspens()
Dim i As Integer, Chemin As String
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("F" & i) <> "X" Then
With Sheets("Bon de commande")
.Range("B2") = Range("A" & i)
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "\Commande " & .Range("B2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True
End With
Range("F" & i) = "X"
End If
Next i
End SubCordialement.
Merci Yvouille !
C'est parfaitement ce que je souhaitais faire.
Et comme je vois que tu maitrise bien ton sujet je me demandais si je pouvais te demander d'ajouter des commentaires pour chaque commande ?
Car après je vais l'adapter pour un autre fichier plus complexe mais fonctionnant selon même modèle et ça me permettra d'apprendre.
Dans tous les cas merci beaucoup !
Sub Traiter_commandes_en_suspens()
Dim i As Integer, Chemin As String
Application.ScreenUpdating = False
'On enregistre le chemin du fichier de base afin de l'avoir à disposition
'au moment de devoir enregistrer les fichiers PDF
'Pour autant que de les enregistrer à cet endroit te convienne
Chemin = ThisWorkbook.Path
'On boucle sur toutes les lignes de la feuille "Commandes"
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
'S'il y a un X dans la colonne F on effectue l'action qui suit ...
If Range("F" & i) <> "X" Then
'On détermine une feuille avec laquelle on va travailler en parallèle
'(ci-après, les références avec des points devant concernent cette feuille)
With Sheets("Bon de commande")
'La cellule B2 de la feuille "Bon de commande" prend la valeur de la cellule A de la ligne
'passée en revue de la feuille "Commandes" (donc la feuille "Bon de commande" est actualisée)
.Range("B2") = Range("A" & i)
'On enregistre la feuille "Bon de commande" (puisqu'il y a un point devant la référence) au format PDF
'dans le dossier au bout du chemin enregistré ci-dessus
.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Chemin & "\Commande " & .Range("B2") & ".pdf" _
, Quality:=xlQualityStandard, IncludeDocProperties:=True
'On n'a plus besoin de travailler avec la feuille "Bon de commande" en parallèle.
End With
'On indique par un X que cette ligne a été traitée.
Range("F" & i) = "X"
End If
Next i
End SubJ'ai tout compris merci beaucoup !
Et bonne fin de WE !