IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Subscript out of range - Userform Combobox rempli avec données d'un document Excel


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Subscript out of range - Userform Combobox rempli avec données d'un document Excel
    Bonjour à tous,

    Je travaille actuellement sur un petit Userform qui fait appel à deux documents Excel pour ses comBobox.
    J'ai, avec les conseils de quelques forumeurs, réussi à créer un premier combobox qui fait appel à la base de données.
    Pour le second ComboBox j'ai copier coller le code en modifiant le nom des variables... Et c'est là que ça pêche !

    Je ne comprend pas pouruqoi je reste avec l'erreur " Run Type Erro 9 Subscript out of range "
    Le problème c'est que le debuggeur VBA ne me surligne pas le bout de code qui pose problème.
    Je me rend juste compte que quand je passe tout le code censé rajouter des items dans le second combobox en commentaire tout fonctionne nickel.
    Je pense (edit : a raison) que cela vient du fait que j'ai dût faire une erreur lors de la création de mon tableau.

    J'ai essayé de modifier pas mal le nom des variables mais tout en prenant le moins de risques possibles... Je vous copie/colle mon code de façon à ce que vous puissiez me donner votre avis.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub Userform_Initialize()
    Dim lig As Integer, i As Integer
    Dim lig2 As Integer, f As Integer
     
        With ComboBox2
        With ActiveDocument
     
            lig = Get_List_Noms
            If lig > 0 Then
                ReDim List_Noms(3, lig)
                List_Noms = RcdSt
                For i = 0 To lig - 1
                    Me.ComboBox2.AddItem RcdSt(0, i) & " " & RcdSt(1, i) & " " & RcdSt(2, i)
                Next i
                Me.ComboBox2.ListIndex = -1
            End If
        End With
        End With
     
         With ComboBox3
        With ActiveDocument
     
            lig2 = Get_List_Noms2
            If lig2 > 0 Then
                ReDim List_Noms2(3, lig2)
                List_Noms2 = Table4
                For f = 0 To lig2 - 1
                    Me.ComboBox3.AddItem Table4(0, f) & " " & Table4(1, f) & " " & Table4(2, f)
                Next f
               Me.ComboBox3.ListIndex = -1
            End If
        End With
        End With
    End Sub
    En vous remerciant et a vot' bon coeur !

  2. #2
    Membre à l'essai
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Alors effectivement je m'y étais mal pris, j'ai renommé le tableau RCDST et maintenant cela fait appel aux bonnes données !
    Le problème s'est déplacé (les joies du bricolage du code...)

    J'ai maintenant un message invalid use of type Null qui apparaît sur la 2ème ligne du code suivant :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     If Not Index = -1 Then
            Id2 = List_Noms2(3, Index)
            lig2 = Get_Fiche2(Id)
            If lig2 > 0 Then
     
                With ActiveDocument
                 .Bookmarks("bminterlocuteur").Range.Text = RcdSt(3, 0)
     
     
                End With
            End If
        End If
    Apparemment Index est empty, voyez vous un moyen de remeder à cela ?

  3. #3
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    "invalid use of type Null" apparaît lorsque tu tentes d'écrire une donnée et que cette donnée n'existe pas.
    C'est pas le code qui pose problème mais la donnée qui n'existe pas.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Points : 19
    Points
    19
    Par défaut
    Je vous remercie pour ces précisions,

    Je m'étais effectivement rendu compte de ce problème.
    La chose qui me turlupine c'est que je n'arrive pas à comprendre comment résoudre ceci.
    Le debuggueur m'indique que Index est vide... pourtant juste plus haut j'ai exactement le même code pour un autre fichier et l'index n'est pas vide.
    Je n'arrive pas à trouver le champ qui remplit mon index ou qui indique ce que c'est...

    Pour ce qui est du bookmarks, j'ai bel et bien des données dans la troisième case de mon tableau et le comboBox se remplit correctement.
    Dans le code ci-dessous on voit que j'ai essayer de remplacer Index par Index2 pour voir si le changement se fait mais il apparaît que rien ne change..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub cmdAddLetter_Click()
     
     
    Dim Id As Integer, lig As Integer
    Dim S As String
    Dim Id2 As Integer, lig2 As Integer
    Dim Index2 As Integer
     
     
        If Not Index = -1 Then
            Id = List_Noms(3, Index)
            lig = Get_Fiche(Id)
            If lig > 0 Then
     
                With ActiveDocument
                 .Bookmarks("bmaddress").Range.Text = RcdSt(4, 0) & RcdSt(5, 0) & "," & RcdSt(6, 0)
                    .Bookmarks("bmnationalite").Range.Text = RcdSt(11, 0)
                    .Bookmarks("bmsecuritesociale").Range.Text = RcdSt(9, 0)
                    .Bookmarks("bmdatenaissance").Range.Text = RcdSt(11, 0)
                    .Tables(1).Cell(1, 1).Range.Text = S
     
                End With
            End If
        End If
     
     
        If Not Index2 = -1 Then
            Id2 = List_Noms2(3, Index2)
            lig2 = Get_Fiche2(Id2)
            If lig2 > 0 Then
     
                With ActiveDocument
                 .Bookmarks("bminterlocuteur").Range.Text = RcdSt(3, 0)
                .Bookmarks("bmaccesentransport").Range.Text = RcdSt(4, 0)
     
                End With
            End If
        End If
    Si quelqu'un pouvait m'indiquer comment trouver ce qui remplit le champ index ou comment passer outre ce problème..

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le problème est que ton code est très compliqué à lire et pas commenté.

    Par exemple, on retrouve RcdSt dans le code, je pense que c'est un tableau, mais il n'est pas déclaré dans les variables.
    Une autre Index, je pense que c'est un entier, mais une fois de plus, il n'est pas défini.

    De plus, le code que tu nous donnes n'est pas le code qui sert à remplir les combos.

    Je dirais que commencer par mettre de l'ordre dans les variables et commenter ton code t'aiderais un peu.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

Discussions similaires

  1. 'subscript out of range'
    Par NulenVBA dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/10/2008, 10h03
  2. vector subscript out of range: qu'est-ce ?
    Par sa.mh dans le forum C++
    Réponses: 15
    Dernier message: 22/05/2008, 16h47
  3. Réponses: 1
    Dernier message: 23/04/2008, 10h37
  4. vector subscript out of range
    Par nightwar dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/03/2008, 18h35
  5. error9 subscript out of range
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/03/2008, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo