j'ai ce fichier qui permet à certaines dates d'envoyer des courriers, tout fonctionne bien.
je veux, dans le module 7 imprimer les adresses de la feuille 3 en fonction des cases cochées dans la colonne M de la feuille 1
j'ai repris le module 2 pour l'adapter au module 7 mais au lieu de m'imprimer 2 enveloppes (2 cases cochées) il me les imprime toutes. j'ai essayé pas mal de truc mais il m'en imprime qu'une seule et elle ne fait pas partie de la sélection.
autrement si c'est pas la bonne adresse imprimée l'adresse est bien formatée et correctement imprimée
Des règles fondamentales doivent être respectées lors de l'écriture du code dans des modules standards :
1) Il faut éviter de nommer identiquement plusieurs procédures publiques : Excel se trouve devant une ambigüité de choix et risque de ne pas exécuter celle qu'on voudrait.
2) Pour désigner une plage de cellule, il faut préciser systématiquement la feuille à la elle appartient (alors que ce n'est pas obligatoire dans le module de la feuille).
1) Dans tous les modules, déclarer "privée" la procédure d'export vers word :
Code:
Private Sub export_données_dans_signet_word(ligne)
2) Préciser le nom des feuilles, dans le module 7 :
Code:
With Worksheets("Feuil1")
nblignes = .Cells(Rows.Count, "G").End(xlUp).Row
For ligne = 3 To nblignes
If .Cells(ligne, "M") = True Then
export_données_dans_signet_word (ligne)
End If
Next ligne
End With
et
Code:
With Sheets("Feuil3")
WordDoc.Bookmarks("adresse").Range.Text = .Cells(ligne, 5)
End With
C'est à dire que, dans la feuille 1 [Worksheets("Feuil1")], à partir de la cellule [.Cells()] situé sur la dernière ligne (Rows.count) de la colonne "G", Excel cherche, en allant vers le haut [.End(xlUp)], la première cellule qui n'est pas vide et affecte (=) le numéro de ligne de cette cellule (.Row) à la variable nblignes.
C'est l’équivalent, en partant de la dernière cellule, de l'action au clavier : Ctrl + Flèche vers le haut