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

Macros et VBA Excel Discussion :

Problème : nom ambigu détecté : ComboBox1_change


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut Problème : nom ambigu détecté : ComboBox1_change
    Bonjou à toutes et à tous,

    Je suis nouvelle utilisatrice d'Excel et j'aurai besoin d'aide s'il vous plait.

    j'aimerai faire 3 listes déroulantes qui dépendent les une des autres.

    J'ai trouvé un petit tutoriel qui m'a permis de voir comment réaliser ce que je voulais.

    J'ai un gros problème, j'ai un Private Sub ComboBox1_Change() qui apparait 2 fois dans mon code et je ne sais pas comment les relier ou comment faire pour qu'il accepte les 2.

    Du coup avec mon code, j'ai une erreur qui me dit nom ambigu détecté : combobox1_change

    Si quelqu'un a une solution ça m'aiderait énormément

    Merci à toutes et à tous

  2. #2
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Re-
    Pour pouvoir t'aider à "combiner" les 2 codes, encore faudrait il les voir... Peux tu stp, copier/coller tes 2 codes dans une prochaine réponse?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Oui bien sûr le voici, j'ai mis des commentaires qui séparent les 2 codes



    'voilà le code que j'aimerai combiner avec le mien

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    Option Explicit
     
    Dim Ws As Worksheet
    Dim NbLignes As Integer
     
    'Les données sont dans les colonnes A à D, d'un onglet nommé "Base".
    'La procédure effectue un remplissage conditionnel des Combobox en fonction de
    'ce qui est sélectionnée dans le contrôle précédent:
    'La sélection du ComboBox1 (données colonne A) définit le contenu du ComboBox2 (données colonne B) ,
    'La sélection du ComboBox2 définit le contenu du ComboBox3 (données colonne C) …etc...
    '
     
    Private Sub UserForm_Initialize()
        'Définit la feuille contenant les données
        Set Ws = Worksheets("Base")
        'Définit le nombre de lignes dans la colonne A
        NbLignes = Ws.Range("A65536").End(xlUp).Row
     
        'Remplissage du ComboBox1
        Alim_Combo 1
     
    End Sub
     
     
    Private Sub ComboBox1_Change()
        'Remplissage Combo2
        Alim_Combo 2, ComboBox1.Value
    End Sub
     
     
    Private Sub ComboBox2_Change()
        'Remplissage Combo3
        Alim_Combo 3, ComboBox2.Value
    End Sub
     
     
    Private Sub ComboBox3_Change()
        'Remplissage Combo4
        Alim_Combo 4, ComboBox3.Value
    End Sub
     
     
     
    'Procédure pour alimenter les ComboBox
    Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
        Dim j As Integer
        Dim Obj As Control
     
        'Définit le ComboBox à remplir
        Set Obj = Me.Controls("ComboBox" & CbxIndex)
        'Supprime les anciennes données
        Obj.Clear
     
        'alimente le Combobox initial (Combobox1)
        If CbxIndex = 1 Then
            'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne)
            For j = 2 To NbLignes
                Obj = Ws.Range("A" & j)
                'Remplit le ComboBox sans doublons
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j)
            Next j
        Else
            'Alimentation conditionnelle des autres Combobox en fonction de
            'ce qui est sélectionnée dans le contrôle précédent:
            '(La sélection du ComboBox1 définit le contenu du ComboBox2,
            'La sélection du ComboBox2 définit le contenu du ComboBox3 …etc...)
            For j = 2 To NbLignes
                If Ws.Range("A" & j).Offset(0, CbxIndex - 2) = Cible Then
                    Obj = Ws.Range("A" & j).Offset(0, CbxIndex - 1)
                    If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)
                End If
            Next j
       End If
     
       'Enlève la sélection dans le ComboBox
       Obj.ListIndex = -1
       'fin du code que j'aimerai combiner avec le mien
    End Sub
     
     
    'début du code que j'ai déjà utlisé
     
     
    Private Sub Lireuneremarque_Click()
    UserForm2.Show
    End Sub
     
    Private Sub Saisiecaractéristiquecmd_Click()
    'Ouvrir le formulaire de saisie
    'Les données saisies seront insérées dans la deuxième ligne de la feuille
    Worksheets("carccmd").Rows(6).Select
    Selection.Insert
    'Les objets des feuilles utilisateur gardent dans leur propriétés les dernières valeurs saisies.
    'Afin d'obtenir une feuille utilisateur vierge il faut remettre à zéro tous les contrôles de la feuille.
    With UserForm1
     
     
         .N°CR = ""
         .dateCR = Date
         .dateintervention = ""
         '.intervenant = ""
         .atelier = ""
         .équipement = ""
         .àcompleter2 = ""
         .identificationduprobleme = ""
         .mat_nece = ""
         .nbpersonnes = "1"
         .temps = ""
         .etatreparation = ""
     
     
     
     
     
     
        End With
    'afficher la feuille nous ajoutons encore UserForm1.Show
    UserForm1.Show
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
     
    End Sub

  4. #4
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Ok. Nous n'en demandions pas tant, mais juste les 2 codes Combobox1_Change... Bon là tu n'en mets qu'un seul alors je présume que le second est celui que tu as mis dans l'autre sujet du jour ici même...
    Donc tu souhaites "combiner" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ComboBox1_Change()
    'Remplissage Combo2
    Alim_Combo 2, ComboBox1.Value
    End Sub
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ComboBox1_Change()
     Call MacroCalculatrice
    End Sub
     
    Private Sub MacroCalculatrice()
    If ComboBox1 <> "" And TextBox1 <> "" Then
        Me.TextBox2 = CDbl(Me.ComboBox1) * CDbl(Me.TextBox1)
    End If
    End Sub
    Si tel est le cas, as tu essayé? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
    'Remplissage Combo2
    Alim_Combo 2, ComboBox1.Value
    'calculatrice
    Call MacroCalculatrice
    End Sub

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Non j'avoue que je n'avais pas essayé, j'avais essayé de renommer la procédure, je pensais que cela pouvait marcher.

    Oui c'est ce que j'aimerai faire, pour que la procédure ne soit appelée qu'une seule fois, car lorsque l'appel est fait plusieurs fois, il affiche une erreur.

    Pour la solution que tu as proposé, j'ai essayé mais j'ai d'autres erreurs , à moins que je n'ai pas fait ce qu'il fallait :s.

    Pourrais-tu s'il te plait, si tu veux bien, m'envoyer le code avec les modifications s'il te plait? Ca m'aiderait beaucoup s'il te plait

    Merci d'avance pour ton aide et de m'accorder du temps

  6. #6
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Pourrais-tu s'il te plait, si tu veux bien, m'envoyer le code avec les modifications s'il te plait? Ca m'aiderait beaucoup s'il te plait
    Ben en fait non, ça ne t'aiderais pas. L'idéal serait que tu comprennes les codes que tu as placé plus haut...
    Dans ma dernière réponse, je te l'ai donné le code que tu souhaites...
    ComboBox1_Change
    alimente combobox2
    appelle la procédure de calcul
    Que veux tu de plus? Tout est dit...
    Maintenant, je pense que tu ne captes pas grand chose à tout ce charabia de VBA. Ca se comprends, tu sais je débute également. Si tu veux un coup de main pour comprendre ces lignes de code qui te posent problème, vas y envoie les questions. On peux même correspondre par MP, dans la limite ou ça ne risque pas d'intéresser un futur lecteur de ce sujet.
    Tu dis...

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Si si le code je le comprends. Après il me faut du temps, et je ne comprends pas tout, ce qui est normal je pense. Après au niveau de ta technique pour relier 2 procédures m'a l'air intéressante et je l'ai appliqué sur toutes les procédures qui portaient le même nom mais il me sort d'autres erreurs là où il n'y en avait pas auparavant :s.

    C'est pour cela que ça "m'énerve" si on peut dire ça comme ça car normalement il n'y a pas d'erreurs, ou alors sur la partie qui a été modifié.

  8. #8
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    De la même façon que pour t'aider à modifier un code, il vaux mieux placer le code dans tes réponses, pour corriger une erreur, il faut que nous sachions de quoi tu parles. Peux tu donc nous indiquer ici les autres messages d'erreur et sur qu'elle(s) ligne(s) de code elles se déclenchent?

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 23
    Points
    23
    Par défaut
    Oui bien sur, autant pour moi.

    Voici les erreurs :
    - erreur d'exécution '-2147467259 (80004005)' : erreur non répertoriée à la ligne With Userform1 de ce code


    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
    Private Sub Lireuneremarque_Click()
    UserForm2.Show
    End Sub
     
    Private Sub Saisiecaractéristiquecmd_Click()
    Worksheets("carccmd").Rows(6).Select
    Selection.Insert
     
    With UserForm1
     
     
         .N°CR = ""
         .dateCR = Date
         .dateintervention = ""
         '.intervenant = ""
         .ComboBox1 = ""
         .ComboBox2 = ""
         .ComboBox3 = ""
         .ComboBox12 = ""
         .identificationduprobleme = ""
         .mat_nece = ""
         .nbpersonnes = "1"
         .temps = ""
         .etatreparation = ""
           End With
     
     
    UserForm1.Show
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
     
    End Sub
    Voilà pour la 1ère erreur .

    Merci à toutes et à tous

  10. #10
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 816
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 816
    Points : 2 954
    Points
    2 954
    Billets dans le blog
    10
    Par défaut
    Bonjour le forum,
    Ce problème a été résolu après échange du fichier concerné en MP. Comme ce n'est pas la procédure de résolution des forums, et dans le but d'en faire profiter tout le monde, je vous apporte la solution à l'erreur...
    erreur d'exécution '-2147467259 (80004005)' : erreur non répertoriée ==> cette erreur était du à la manière de remplir les combobox. Dans le code on peux voir un : Obj.Clear ou Obj représente une combobox. Or cette combobox était "remplie" par sa propriété .RowSource. D'ou l'erreur, Clear ne fonctionnant pas avec une combobox remplie par Rowsource.
    Bonne continuation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] "Erreur de compilation, nom ambigu détecté worksheet change". :/
    Par Imperium dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/09/2021, 15h36
  2. nom ambigu détecté : worksheet change
    Par MEHDI_MHS dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2011, 17h25
  3. [XL-2003] Nom ambigu détecté
    Par Tonete dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2010, 21h49
  4. problème nom de champ = mot clé
    Par JYH dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/12/2005, 13h13
  5. Compilation problème "is ambiguous"
    Par Shiftane dans le forum Langage
    Réponses: 6
    Dernier message: 20/10/2005, 12h00

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