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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    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 Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    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 averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    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 Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    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 averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    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 Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    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...

+ 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, 14h36
  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, 16h25
  3. [XL-2003] Nom ambigu détecté
    Par Tonete dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/11/2010, 20h49
  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, 12h13
  5. Compilation problème "is ambiguous"
    Par Shiftane dans le forum Langage
    Réponses: 6
    Dernier message: 20/10/2005, 11h00

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