Macro : nommer l'enregistrement selon plusieurs cell variable

Résolu
stitchbouck Messages postés 137 Statut Membre -  
stitchbouck Messages postés 137 Statut Membre -
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.

2 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. stitchbouck Messages postés 137 Statut Membre 2
     
    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