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 pour un novice


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut Erreur de compilation pour un novice
    Salut à tous, je me tourne vers vous car je n'ai aucune connaissance en VBA... (sous Office 365)
    Pour ma p'tite entreprise, je tiens à jour un fichier Excel pour les commandes des clients. J'aimerai juste faciliter le remplissage des champs à l'aide d'un formulaire (autre que celui natif d'Excel qui n'est ni pratique ni esthétique). Au cours de mes recherches sur le net, je suis donc tombé sur un tuto qui m'avait l'air assez simple : http://cellulexcel.blogspot.com/p/qu...e-loption.html, je l'ai donc suivi en adaptant selon mes nécessités (sans rajouts pour le moment). J'ai donc collé le code fourni en ajustant ce qu'il fallait ajuster (je pense). Seulement quand je veux valider et voir l'aperçu, notamment pour tester les boutons, j'ai un message d'erreur "Erreur de compilation. Membre ou méthode ou de données introuvable". Malgré mes tentatives de recherches à ce sujet (d'où ma présence ici), je ne trouve pas l'origine du problème... Si quelqu'un à une idée ?!

    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
    'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
    Option Explicit  'Activation de la déclaration explicite des variables
    Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm
     
    'Correspond au programme du bouton QUITTER
    Private Sub Quitter_Click()
    Unload Me
    'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire, les valeurs de ses contrôles sont à alors perdues.
    ' Me => Référence à l'objet en cours
     End Sub
     
    'Correspond au programme du FORMULAIRE
    'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform.
    Private Sub UserForm_Initialize() 'à l'initialisation de l'userform
    ' Déclaration des variables grâce à Dim
    '    1° Choisir un nom
    '    2° Choisir un TYPE (= définir la nature du contenu)
    ' --------------------------------------------------------
    Dim J As Long 'déclare la variable J
    Dim I As Integer
     
     
     
    ' Affecter une valeur à une variable (= fixer la valeur de la variable)
      Set Ws = Sheets("Recettes") 'Attention ce nom doit correspondre au nom de votre ONGLET
    'On stock le nom de la feuille "Recettes" dans une variable nommée WS
     
      With Me.TextBox1
        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 8 'on lance une boucle de valeur mini 1 et maxi 8
        Me.Controls("TextBox" & I).Visible = True 'affiche les données dans les textbox
    Next I
    End Sub
     
    'Correspond au programme du bouton MODIFIER
    Private Sub CommandButton1_Click()
    Dim Ligne As Long
    Dim I As Integer
     
    If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
     
      If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection
      Ligne = Me.ComboBox1.ListIndex + 2
      For I = 1 To 8
        If Me.Controls("TextBox" & I).Visible = True Then
          Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
        End If
      Next I
        End If 'fin de la condition
     
    'Code permettant de modifier le format de la plage de cellule en format nombre
    With Ws.Range("D2:d10")
                .NumberFormat = "0"
                .Value = .Value
    End With
    End Sub
     
    'Correspond au programme de la LISTE DEROULANTE
    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
      For I = 1 To 8
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
      Next I
     End Sub
    Ce n'est que la première partie du tuto, la mise en place. Je ne me suis pas encore penché sur la suite... Merci d'avance pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    Ce message apparait souvent lorsque le code fait appel à un objet qui n'existe pas sur la Userform (ou qui n'existe pas avec le nom utilisé).

    Vérifier donc que toutes les textbox , commandbutton et combobox du code existe bien .

    A+

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Déjà --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Me.TextBox1
        For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
          .AddItem Ws.Range("A" & J)
        Next J
    la méthode additem n'est tout simplement pas un membre des objets de type textbox.

    Alors :
    J'ai donc collé le code fourni
    NON ! ou alors tu as "copié/collé" un code issu de la première poubelle du quartier

  4. #4
    Membre à l'essai
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Janvier 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Entrepreneur
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2019
    Messages : 4
    Par défaut
    Parfait, merci Algoplus, grâce à cette indication (pourtant toute simple), j'ai trouvé l'origine de mon problème... Il était noté "UserForm" alors que la feuille s'appelle "UserForm1". Comme quoi un simple caractère change tout...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Correspond au programme du FORMULAIRE
    'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform.
    Private Sub UserForm1_Initialize() 'à l'initialisation de l'userform
    ' Déclaration des variables grâce à Dim
    '    1° Choisir un nom
    '    2° Choisir un TYPE (= définir la nature du contenu)
    ' --------------------------------------------------------
    Je vais pouvoir m'attaquer à la suite, merci !

    NON ! ou alors tu as "copié/collé" un code issu de la première poubelle du quartier
    Oui, j'ai copié/collé le code donné dans le tuto.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    non non !

    quelque soit le nom de l'userform (toto, userform1...) on aura toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub UserForm_Initialize()
    regarde plutôt ce que soulève unparia

    Si c'est un code trouvé, c'est un code pour apprendre à repérer les erreurs!

Discussions similaires

  1. Erreur de compilation (pour tous les programmes)
    Par LittleWhite dans le forum Qt
    Réponses: 10
    Dernier message: 28/11/2010, 12h46
  2. erreur de compil pour curl
    Par webfranc dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 12/12/2008, 21h22
  3. Erreur à la compilation pour un bouton créé dynamiquement
    Par echap2000 dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/08/2008, 17h23
  4. Réponses: 2
    Dernier message: 30/05/2008, 11h56
  5. Réponses: 12
    Dernier message: 12/08/2006, 15h30

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