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 :

Erreur de compilation dans le code VBA d'excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2015
    Messages : 42
    Par défaut Erreur de compilation dans le code VBA d'excel
    Bonjour,
    J'essaye de créer un formulaire dans excel en suivant une vidéo et je dois avoir un probléme dans le code VB.
    J'ai copier le code sur le site du tuto et je l'ai collé dans [userForm] .
    A l'appel du formulaire (f5) j'ai un message d'erreur
    Erreur de compilation
    Erreur de syntaxe
    J'ai une ligne en fond jaune avec une fléche au début (ligne 7)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Private Sub UserForm_Initialize()
    et une ligne en fond bleu (ligne 15)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ComboBox2.List() = Array(«  », « M. », « Mme », « Mlle »)
    Cette ligne est encodée en rouge, ainsi que d'autres lignes.
    J'ai plusieurs lignes encodées en rouge alors que sur le tuto elles sont noires.Mon code est-il mal formaté?
    J'ai tenté un copier/coller en formatant en VB dans "notepad"
    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
     
    'Pour le formulaire
     
    Private Sub UserForm_Initialize()
     
    Dim J As Long
     
        Dim I As Integer
     
        ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
     
        ComboBox2.List() = Array(«  », « M. », « Mme », « Mlle »)
     
        Set Ws = Sheets(« Clients ») 'Correspond au nom de votre onglet dans le fichier Excel
     
        With Me.ComboBox1
     
            For J = 2 To Ws.Range(« A » & Rows.Count).End(xlUp).Row
     
                .AddItem Ws.Range(« A » & J)
     
            Next J
     
        End With
     
        For I = 1 To 7
     
            Me.Controls(« TextBox » & I).Visible = True
     
        Next I
     
    End Sub
    'Pour la liste déroulante Code client
     
    Private Sub ComboBox1_Change()
     
        Dim Ligne As Long
     
        Dim I As Integer
     
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
     
        Ligne = Me.ComboBox1.ListIndex + 2
     
        ComboBox2 = Ws.Cells(Ligne, « B »)
     
        For I = 1 To 7
     
            Me.Controls(« TextBox » & I) = Ws.Cells(Ligne, I + 2)
     
        Next I
     
    End Sub
    'Pour le bouton Nouveau contact
     
    Private Sub CommandButton1_Click()
     
        Dim L As Integer
     
        If MsgBox(« Confirmez-vous l’insertion de ce nouveau contact ? », vbYesNo, « Demande de confirmation d’ajout ») = vbYes Then
     
            L = Sheets(« Clients »).Range(« a65536 »).End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
     
            Range(« A » & L).Value = ComboBox1
     
            Range(« B » & L).Value = ComboBox2
     
            Range(« C » & L).Value = TextBox1
     
            Range(« D » & L).Value = TextBox2
     
            Range(« E » & L).Value = TextBox3
     
            Range(« F » & L).Value = TextBox4
     
            Range(« G » & L).Value = TextBox5
     
            Range(« H » & L).Value = TextBox6
     
            Range(« I » & L).Value = TextBox7
     
        End If
     
    End Sub
    'Pour le bouton Modifier
     
    Private Sub CommandButton2_Click()
     
        Dim Ligne As Long
     
        Dim I As Integer
     
        If MsgBox(« Confirmez-vous la modification de ce contact ? », vbYesNo, « Demande de confirmation de modification ») = vbYes Then
     
            If Me.ComboBox1.ListIndex = -1 Then Exit Sub
     
            Ligne = Me.ComboBox1.ListIndex + 2
     
            Ws.Cells(Ligne, « B ») = ComboBox2
     
            For I = 1 To 7
     
                If Me.Controls(« TextBox » & I).Visible = True Then
     
                    Ws.Cells(Ligne, I + 2) = Me.Controls(« TextBox » & I)
     
                End If
     
            Next I
     
        End If
     
    End Sub
    'Pour le bouton Quitter
     
    Private Sub CommandButton3_Click()
     
        Unload Me
     
    End Sub

  2. #2
    Membre actif
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Par défaut
    Il me semble que c'est à cause de ton .

    Il faut que tu déclare toutes tes variables, genre ton "I", "J", ou alors tu supprime ton Normalement ça devrait marcher, par contre je ne sais pas trop se que ça change si tu supprime le option explicit.

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2015
    Messages : 42
    Par défaut
    Je viens à l'instant de trouver.
    J'ai trouvé une nouvelle source pour télécharger mon code et maintenant je n'ai plus d'erreur.

    J'ai rajouté quelques "TExtBox" Voici mon code qui fonctionne
    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
     
    Option Explicit
    Dim Ws As Worksheet
     
    Private Sub ComboBox3_Change()
     
    End Sub
     
    'Pour le formulaire
    Private Sub UserForm_Initialize()
        Dim J As Long
        Dim I As Integer
     
        ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
        ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
        Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
        With Me.ComboBox1
            For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
                .AddItem Ws.Range("A" & J)
            Next J
        End With
        For I = 1 To 11
            Me.Controls("TextBox" & I).Visible = True
        Next I
     
    End Sub
     
    'Pour la liste déroulante Code client
    Private Sub ComboBox1_Change()
        Dim Ligne As Long
        Dim I As Integer
     
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox1.ListIndex + 2
        ComboBox2 = Ws.Cells(Ligne, "B")
        For I = 1 To 11
            Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
        Next I
    End Sub
     
    'Pour le bouton Nouveau contact
    Private Sub CommandButton1_Click()
        Dim L As Integer
        If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
            L = Sheets("Licenciés").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
            Range("A" & L).Value = ComboBox1
            Range("B" & L).Value = ComboBox2
            Range("C" & L).Value = TextBox1
            Range("D" & L).Value = TextBox2
            Range("E" & L).Value = TextBox3
            Range("F" & L).Value = TextBox4
            Range("G" & L).Value = TextBox5
            Range("H" & L).Value = TextBox6
            Range("I" & L).Value = TextBox7
            Range("J" & L).Value = TextBox8
            Range("K" & L).Value = TextBox9
            Range("L" & L).Value = TextBox10
            Range("M" & L).Value = TextBox11
            Range("N" & L).Value = ComboBox3
        End If
        End If
    End Sub
     
    'Pour le bouton Modifier
    Private Sub CommandButton2_Click()
        Dim Ligne As Long
        Dim I As Integer
     
        If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
            If Me.ComboBox1.ListIndex = -1 Then Exit Sub
            Ligne = Me.ComboBox1.ListIndex + 2
            Ws.Cells(Ligne, "B") = ComboBox2
            For I = 1 To 11
                If Me.Controls("TextBox" & I).Visible = True Then
                    Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
                End If
            Next I
        End If
    End Sub
     
    'Pour le bouton Quitter
    Private Sub CommandButton3_Click()
        Unload Me
    End Sub
    J'ai tenté de rajouter une liste déroulante (comboBox3) en mettant le code suivant (ligne 28 à 43)
    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
     
    Option Explicit
    Dim Ws As Worksheet
     
    Private Sub ComboBox3_Change()
     
    End Sub
     
    'Pour le formulaire
    Private Sub UserForm_Initialize()
        Dim J As Long
        Dim I As Integer
     
        ComboBox2.ColumnCount = 1 'Pour la liste déroulante Civilité
        ComboBox2.List() = Array("", "M.", "Mme", "Mlle")
        Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
        With Me.ComboBox1
            For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
                .AddItem Ws.Range("A" & J)
            Next J
        End With
        For I = 1 To 11
            Me.Controls("TextBox" & I).Visible = True
        Next I
     
    End Sub
     
     Private Sub UserForm_Initialize()
        Dim J As Long
        Dim I As Integer
     
        ComboBox3.ColumnCount = 1 'Pour la liste déroulante Catégorie
        ComboBox3.List() = Array("", "Benjamin", "Minime", "Cadet", "Junior", "Sénior", "Vétéran")
        Set Ws = Sheets("Licenciés") 'Correspond au nom de votre onglet dans le fichier Excel
        With Me.ComboBox3
            For J = 2 To Ws.Range("L" & Rows.Count).End(xlUp).Row
                .AddItem Ws.Range("L" & J)
            Next J
        End With
        For I = 1 To 11
            Me.Controls("TextBox" & I).Visible = True
        Next I
    End Sub
     
     
    'Pour la liste déroulante Code client
    Private Sub ComboBox1_Change()
        Dim Ligne As Long
        Dim I As Integer
     
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox1.ListIndex + 2
        ComboBox2 = Ws.Cells(Ligne, "B")
        For I = 1 To 11
            Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
        Next I
    End Sub
     
    'Pour le bouton Nouveau contact
    Private Sub CommandButton1_Click()
        Dim L As Integer
        If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
            L = Sheets("Licenciés").Range("a65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement ? la premi?re ligne de tableau non vide
            Range("A" & L).Value = ComboBox1
            Range("B" & L).Value = ComboBox2
            Range("C" & L).Value = TextBox1
            Range("D" & L).Value = TextBox2
            Range("E" & L).Value = TextBox3
            Range("F" & L).Value = TextBox4
            Range("G" & L).Value = TextBox5
            Range("H" & L).Value = TextBox6
            Range("I" & L).Value = TextBox7
            Range("J" & L).Value = TextBox8
            Range("K" & L).Value = TextBox9
            Range("L" & L).Value = TextBox10
            Range("M" & L).Value = TextBox11
            Range("N" & L).Value = ComboBox3
        End If
        End If
    End Sub
     
    'Pour le bouton Modifier
    Private Sub CommandButton2_Click()
        Dim Ligne As Long
        Dim I As Integer
     
        If MsgBox("Confirmez-vous la modification de ce contact ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
            If Me.ComboBox1.ListIndex = -1 Then Exit Sub
            Ligne = Me.ComboBox1.ListIndex + 2
            Ws.Cells(Ligne, "B") = ComboBox2
            For I = 1 To 11
                If Me.Controls("TextBox" & I).Visible = True Then
                    Ws.Cells(Ligne, I + 2) = Me.Controls("TextBox" & I)
                End If
            Next I
        End If
    End Sub
     
    'Pour le bouton Quitter
    Private Sub CommandButton3_Click()
        Unload Me
    End Sub
    et j'ai un message "erreur de compilation"
    Nom ambigu détecté:userForm_Initialize
    J'ai du faire une erreur ?

  4. #4
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2015
    Messages : 42
    Par défaut
    J'ai trouvé ! Il fallait que j'enléve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub UserForm_Initialize()
        Dim J As Long
        Dim I As Integer

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

Discussions similaires

  1. [AC-2010] Erreur de compilation sur un code VBA
    Par sardaucar dans le forum VBA Access
    Réponses: 4
    Dernier message: 18/05/2012, 11h56
  2. [XL-2010] J'ai une erreur de compilation dans un de mes code VBA codes
    Par laitram69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/04/2012, 10h19
  3. [AC-2007] Erreur de compilation dans un code qui pourtant fonctionne
    Par cslbcg dans le forum VBA Access
    Réponses: 4
    Dernier message: 06/11/2009, 23h11
  4. [Simulink][Débutante] Erreur de compilation dans un code
    Par karamellati dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/05/2007, 11h47
  5. [Servlet][Compilation] Erreur de compil dans code servlet
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/05/2004, 10h17

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