Macro : nommer l'enregistrement selon plusieurs cell variable

Résolu/Fermé
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 - 12 avril 2016 à 14:05
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 - 12 avril 2016 à 17:06
Bonjour,

J'ai bien tenter de trouver une approche similaire sur les forums mais soit il y a trop de topic et je ne l'ai pas vu, soit ce problème n'a pas été traité. :)

Alors voilà : VBA, Excel 2013.

j'ai une macro qui fait des fiches au format pdf en reprenant certaines informations de l'onglet "info litige", pour les copier dans l'onglet "demande d'enlèvement". De là, il génère le pdf en prenant en compte ce qu'il y a dans "demande d'enlèvement".
Cette fiche peut comporter plusieurs lignes d'anomalie, chacune avec un n° d'anomalie propre à sa ligne.

Ce format PDF porte le nom de plusieurs cellule (date, fournisseur et n° d'anomalie) lorsqu'il s'enregistre :


'Nom à donner au fichier
Dim Nom As String
Nom = Sheets("Demande d'enlèvement").Cells(7, 2).Text & " " & Sheets("Demande d'enlèvement").Cells(6, 6).Text & " " & Sheets("Demande d'enlèvement").Cells(12, 7).Text & ".pdf"


ça fonctionne super !!
je souhaite néanmoins l'améliorer en adaptant cette macro pour qu'elle nomme avec tous les numéros d'anomalie et pas seulement celle en cell 12,7.
Il faudrait, lorsque l'info est disponible, qu'elle nomme aussi avec le n° en cell (13 , 7), cell (14 , 7) etc... jusqu'à la prochaine cellule vide de cette même colonne 7.

La ligne 12 est toujours pleine. Ce qui varie, ce sont les lignes suivantes. il peut aussi bien y avoir 1 seule ligne (et donc 1 seul n° d'anomalie) que 10 lignes ou plus.

En prime... j'aimerai comprendre la macro. je débute, je galère, mais je m'accroche et j'ai besoin de comprendre ce que je fais et pourquoi... et là je patauge pas mal, j'admets mon ignorance :)

J'espère que l'explication de mon cas est clair... lol

D'avance, merci infiniment pour le temps que vous consacrer à aider les autres.



A voir également:

2 réponses

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
Modifié par via55 le 12/04/2016 à 15:28
Bonjour

Essaie ainsi :
'Nom à donner au fichier
Dim DLig As Long, Nom As String, anomalie as String
'n° de anomalie récupéré en G12
anomalie = Sheets("Demande d'enlèvement").Range("G12").Text

' si G13 n'est pas vide
If Sheets("Demande d'enlèvement").Range("G13") <> "" Then
' alors
' dernière ligne remplie en dessous de G12
DLig = Sheets("Demande d'enlèvement").Range("G12").End(xlDown).Row
' Boucle sur les lignes depuis 13 jusqu'à dernière remplie
For n = 13 To DLig
' ajoute dans anomalie la valeur de la cellule aux précédentes séparée par un tiret
anomalie = anomalie & "-" & Sheets("Demande d'enlèvement").Range("G" & n).Text
Next
End If

'établissement du nom à donner
Nom = Sheets("Demande d'enlèvement").Cells(7, 2).Text & " " & Sheets("Demande d'enlèvement").Cells(6, 6).Text & " " & anomalie & ".pdf"


Cdlmnt
Via

"L'imagination est plus importante que le savoir."    A. Einstein
1
stitchbouck Messages postés 117 Date d'inscription mercredi 12 janvier 2011 Statut Membre Dernière intervention 18 avril 2024 2
Modifié par stitchbouck le 12/04/2016 à 17:07
C'est exactement ça !! j'ai encore du mal à décomposer correctement, mais l'explication des syntaxes est claire, je vais finir par comprendre avec le temps et la persévérance :):):)

un grand merci, ça marche du tonnerre :) merci Via !
0