Utiliser sur une ListBox qui varie en fonction de la source

Bonjour forum,

J'ai un userform, qui contient une ListBox, dont le contenu varie en fonction de la source.

L'objectif de mon formulaire est d'envoyer des courriers aux clients sélectionnés à partir de la ListBox, pour ceci j'ai écrit ce code mais il marche pas:

Private Sub Cmd_injecter_Click()
    Dim WordApp As Object
    Dim i As Integer, nomDossier As String, cheminDos As String, doss As String, ligne_grille As Integer
    Dim Fichier As String, Spec As String, DLV As Long

    DLV = Sheets("P9A").Cells(Rows.Count, 1).End(xlUp).Row - 1

    If NoSlct Then
    MsgBox "Vous devez sélectionner au moins une ligne", vbOKOnly, "Contrôle de saisie"
     Else
    If MsgBox("Confirmez-vous la redaction du courrier de l'amiante", vbYesNo, "Courrier de l'amiante") = vbNo Then Exit Sub

    '// création application Word
    Set WordApp = CreateObject("word.application")
    WordApp.Visible = True
    '// injection lignes dans document Word

    With Me.Lbx_grille
        For i = 0 To Me.Lbx_grille.ListCount - 1
            If .Selected(i) Then
            'ligne_grille = tb_lignes_grille(i)
            cheminDos = CreateObject("Wscript.Shell").SpecialFolders("Desktop")

            Fichier = .List(i, 0)
            Spec = .List(i, 1)
            doss = "Client" & Fichier & "-" & Spec
            CreationRepertoire cheminDos, doss

            Call AmianteWord(WordApp, i)
            envoyerCour (i)

            .Selected(i) = False

            End If
        Next i

    End With

    '// fermeture application Word
 WordApp.Quit

    '// Message de fin
    MsgBox "le courrier de l'amiante a été généré", vbInformation, "Confirmation"
    Unload Me
    End If
End Sub

Qqn a une idée?

En PJ, un fichier simplifié pour mieux comprendre.

Merci pour votre aide :)

Bonjour Menal,

1) Problème de déclaration de variable

I est un integer, ne peut donc pas comprendre les valeurs au dessus de 32.767

Voir le cours ICI ou ici

image

2) problème de tableau structuré qui comporte 1.048.575 lignes

Un tableau structuré est fait entre autre pour s'agrandir tout seul quand on arrive au bout, il ne faut donc pas le créer pour toutes les lignes

A+

Merci pour ton aide le code est marché.

Cependant j'utilise dans le code la fonction qui m'a donner pour injecter des valeurs d'Excel dans Word et j'ai une erreur au niveau de cette ligne:

Set cell = Usf.Lbx_grille.List(i, 0).Find(Nom, LookAt:=xlWhole)
capture

voici le code complet de la fonction: ( c'est ton code ;)

Sub AmianteWord(WordApp As Object, i As Integer)
    Dim WordDoc As Object, champ As Object
    Dim Nom As String, nom_fichier As String
    Dim cell As Range, référence As String

    nom_fichier = CreateObject("Wscript.Shell").SpecialFolders("Desktop") & "\Courrier amiante\Courrier initial amiante (DTA).docx"
    Set WordDoc = WordApp.Documents.Open(nom_fichier)
    If Err <> 0 Then MsgBox "Erreur ouverture document modèle --  " & Err.Description: Exit Sub

    '// initialisation champs de fusion
    WordDoc.Fields.Update

    '// remplissage champs de fusion
    For Each champ In WordDoc.Fields
        'Si champ de fusion ...............................
        If champ.Type = 59 Then

            'suppression guillemets champ de fusion
            Nom = Replace(champ.Result, Chr(171), ""): Nom = Replace(Nom, Chr(187), "")

            'remplissage champ de fusion à partir de la valeur de la colonne à laquelle le nom fait référence
            Set cell = Usf.Lbx_grille.List(i, 0).Find(Nom, LookAt:=xlWhole)

            If Not cell Is Nothing Then champ.Result.Text = cell.Offset(i - 1)
        End If
    Next champ

    '// sauvegarde et fermeture document

   Dim Dossier As String, Fichier As String, chemin As String, Spec As String, doss As String

            Fichier = Usf.Lbx_grille.List(i, 0)
            Spec = Usf.Lbx_grille.List(i, 1)
            doss = "Client" & Fichier & "-" & Spec

chemin = CreateObject("Wscript.Shell").SpecialFolders("Desktop") & "\" & doss

'Word
 WordDoc.SaveAs Filename:=chemin & "\Courrier de DTA" & ".docx"

  'PDF
   WordDoc.ExportAsFixedFormat OutputFileName:= _
        chemin & "\Courrier de DTA" & ".pdf", ExportFormat:= _
        17, OpenAfterExport:=False, OptimizeFor:= _
        0, Range:=0, From:=1, To:=1, _
        Item:=0, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=0, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
'WordDoc.SaveChanges = False
    WordDoc.Close
End Sub

Tu sais pourquoi cette erreur?

Merci d'avance.

Rechercher des sujets similaires à "utiliser listbox qui varie fonction source"