Erreur de compilation

Résolu/Fermé
azeuur31 - Modifié le 25 oct. 2018 à 20:38
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 oct. 2018 à 10:38
Bonjour,

Jai un soucis de programmation, je suis novice et j'ai un message qui s'affiche avec un peu de texte en jaune un coup de main svp


Private Sub Image1_Click() (souligné en jaune en cliquant sur débogage

Sheet("Classement par nom").Select
Dim nbligne, Nnbligne
Dim Sel, NSel
Dim Val, NbreInter

If (ComboBox1.Value <> "" And ComboBox2.Value <> "" And TextBox1.Value <> "" And TextBox2.Value <> "" And TextBox3.Value <> "") Then



Message affiché : erreur 424

J'ai essayé plusieurs choses sans y arrivé.


Pour info, voici la programmation faites entièrement en 1 semaine :

Dim Désignation
Dim Intervention

 
Private Sub ComboBox1_Change()

Select Case ComboBox1.Value

    Case 0 'Mixte informatique
        Désignation = 0
    Case 1 'Sanitaires Mixte informatique IT
        Désignation = 1
    Case 2 'Sanitaires Homme CH1
            Désignation = 2
    Case 3 'Sanitaires Femme informatique
            Désignation = 3
    Case 4 'Sanitaires Homme CH2
            Désignation = 4
    Case 5 'Vestiaires CH2
            Désignation = 5
    Case 6 'CH1
            Désignation = 6
    Case 7 'Sanitaires Homme LA
            Désignation = 7
    Case 8 'Sanitaires Handicapé Brut
            Désignation = 8
    Case 9 'Sanitaires Femme Brut
            Désignation = 9
    Case 10 'Sanitaires Homme Brut
            Désignation = 10
    Case 11 'Vestiaires Brut
            Désignation = 11
    Case 12 'Sanitaires Homme petites series
            Désignation = 12
    Case 13 'Sanitaires Femme petites series
            Désignation = 13
    Case 14 'Sanitaires Homme Expédition
            Désignation = 14
    Case 15 'Sanitaires Femme Expédition
            Désignation = 15
    Case 16 'Sanitaires Homme Blanc
            Désignation = 16
    Case 17 'Vestiaires Blanc
            Désignation = 17
    Case 18 'Sanitaires Handicapé Menuiserie
            Désignation = 18
    Case 19 'Sanitaires Femme Menuiserie
            Désignation = 19
    Case 20 'Sanitaires Homme Menuiserie
            Désignation = 20
    Case 21 'Sanitaires Femme Show room
            Désignation = 21
    Case 22 'Sanitaires Homme Show room
            Désignation = 22
    Case 23 'Sanitaires Homme HMY Group
            Désignation = 23
    Case 24 'Sanitaires Femme HMY Group
            Désignation = 24
    Case 25 'Sanitaires Femme Etage SAS
            Désignation = 25
    Case 26 'Sanitaires Mixte Food Décentralisé
            Désignation = 26
    Case 27 'Sanitaires Homme Ancien Accueil
            Désignation = 27
    Case 28 'Sanitaires Homme SAS
            Désignation = 28
    Case 29 'Sanitaires Mixte Food Centralisé
            Désignation = 29
    Case 30 'Sanitaires mixte HMY Group
            Désignation = 30
    Case 31 'Vestiaires Homme Menuiserie
            Désignation = 31
    Case 32 'Sanitaires Handicapé Show room
            Désignation = 32
    Case 33 'Vestiaires LA
            Désignation = 33
    Case 34 'Vestiaires Expédition
            Désignation = 34
    Case 35 'Sanitaires Femme Ancien Accueil
            Désignation = 35
    Case 36 'Sanitaires Homme Etage SAS
            Désignation = 36
    Case 37 'Sanitaires Femme SAS
            Désignation = 37
            
 End Select
End Sub

Private Sub ComboBox2_Change()
Select Case ComboBox2.Value
    Case 0  'Débouchage des toilettes
        Domaine = "Débouchage des toilettes"
    Case 1  'Débouchage des douches
        Domaine = "Débouchage des douches"
    Case 2  'Autre
        Domaine = "Autre"
    Case 3  'chasse d'eau
        Domaine = "chasse d'eau"
    Case 4  'Evier bouché
        Domaine = "Evier bouché"
    Case 5  'Néon
        Domaine = "Néon"
    Case 6  'presto
        Domaine = "Presto"
    Case 7  'plafond
        Domaine = "plafond"
    Case 8  'Savon à main
        Domaine = "Savon à main"
    Case 9 'Chauffe eau
        Domaine = "Chauffe eau"
    Case 9 'Syphon
        Domaine = "Syphon"
    Case 9 'Fuite evier
        Domaine = "Fuite évier"
    Case 9 'Toilette fuite
        Domaine = "Toilette fuite"
    Case 9 'Remise en état
        Domaine = "Remise en etat"
 End Select
End Sub

Private Sub Image2_Click()
Dim nbligne, Nnbligne
Dim Sel, NSel

Unload UserForm1
'Sauve le fichier
   ActiveWorkbook.Save
'Selection la case A de la dernière ligne
Nnbligne = Range("K1").Value
NSel = "A" & Nnbligne
Range(NSel).Select
End Sub

Private Sub Image1_Click()

Sheets("Classement par nom").Select
Dim nbligne, Nnbligne
Dim Sel, NSel
Dim Val, NbreInter


If (ComboBox1.Value <> "" And ComboBox2.Value <> "" And TextBox1.Value <> "" And TextBox2.Value <> "" And TextBox3.Value <> "") Then
 
nbligne = Range("K1").Value
Nnbligne = nbligne + 1
Sel = "A" & nbligne & ":G" & nbligne
Range(Sel).Select
Selection.Copy

Sel = "A" & Nnbligne
Range(Sel).Select
ActiveSheet.Paste

Sel = "A" & nbligne
NSel = "A" & Nnbligne
Val = Range(Sel).Value
Range(NSel).Value = Val + 1
NbreInter = Val + 1

NSel = "B" & Nnbligne
Range(NSel).Value = Désignation

NSel = "F" & Nnbligne
Range(NSel).Value = Intervention

NSel = "D" & Nnbligne
Range(NSel).Value = Range("D2").Value

'remplie les valeurs renseignées
Dim commentaire

commentaire = TextBox1.Value   'N_° de la désignation
NSel = "C" & Nnbligne
Range(NSel).Value = commentaire

commentaire = TextBox2.Value   'Date
NSel = "D" & Nnbligne
Range(NSel).Value = commentaire

commentaire = TextBox3.Value    'N_° de la fiche
NSel = "G" & Nnbligne
Range(NSel).Value = commentaire

'Désignation
NSel = "B" & Nnbligne
Range(NSel).Value = Désignation

'Intervention
NSel = "F" & Nnbligne
Range(NSel).Value = Intervention

'Efface les commbox et les textbox
    ComboBox1.Value = ""
    ComboBox2.Value = ""
    
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
      
Else
MsgBox "Toutes les cases ne sont pas renseignées"
End If

End Sub

Private Sub TextBox4_Change()

End Sub

Private Sub UserForm_Activate()
 
'ComboBox1
    ComboBox1.AddItem "Sanitaires Mixte informatique"                  'ListIndex = 0
    ComboBox1.AddItem "Sanitaires Mixte informatique IT"               'ListIndex = 1
    ComboBox1.AddItem "Sanitaires Homme CH1"                           'ListIndex = 2
    ComboBox1.AddItem "Sanitaires Femme informatique"                  'ListIndex = 3
    ComboBox1.AddItem "Sanitaires Homme CH2"                  'ListIndex = 4
    ComboBox1.AddItem "Vestiaires CH2"                  'ListIndex = 5
    ComboBox1.AddItem "Vestiaires CH1"                  'ListIndex = 6
    ComboBox1.AddItem "Sanitaires Homme LA"                  'ListIndex = 7
    ComboBox1.AddItem "Sanitaires Handicapé Brut"                  'ListIndex = 8
    ComboBox1.AddItem "Sanitaires Femme Brut"                  'ListIndex = 9
    ComboBox1.AddItem "Sanitaires Homme Brut"                  'ListIndex = 10
    ComboBox1.AddItem "Vestiaires Brut"                  'ListIndex = 11
    ComboBox1.AddItem "Sanitaires Homme petites series"                  'ListIndex = 12
    ComboBox1.AddItem "Sanitaires Femme petites series"                  'ListIndex = 13
    ComboBox1.AddItem "Sanitaires Homme Expédition"                  'ListIndex = 14
    ComboBox1.AddItem "Sanitaires Femme Expédition"                  'ListIndex = 15
    ComboBox1.AddItem "Sanitaires Homme Blanc"                  'ListIndex = 16
    ComboBox1.AddItem "Vestiaires Blanc"                  'ListIndex = 17
    ComboBox1.AddItem "Sanitaires Handicapé Menuiserie"                  'ListIndex = 18
    ComboBox1.AddItem "Sanitaires Femme Menuiserie"                  'ListIndex = 19
    ComboBox1.AddItem "Sanitaires Homme Menuiserie"                  'ListIndex = 20
    ComboBox1.AddItem "Sanitaires Femme Show room"                  'ListIndex = 21
    ComboBox1.AddItem "Sanitaires Homme Show room"                  'ListIndex = 22
    ComboBox1.AddItem "Sanitaires Homme HMY Group"                  'ListIndex = 23
    ComboBox1.AddItem "Sanitaires Femme HMY Group"                  'ListIndex = 24
    ComboBox1.AddItem "Sanitaires Femme Etage SAS"                  'ListIndex = 25
    ComboBox1.AddItem "Sanitaires Mixte Food Décentralisé"                  'ListIndex = 26
    ComboBox1.AddItem "Sanitaires Homme Ancien Accueil"                  'ListIndex = 27
    ComboBox1.AddItem "Sanitaires Homme SAS"                  'ListIndex = 28
    ComboBox1.AddItem "Sanitaires Mixte Food Centralisé"                  'ListIndex = 29
    ComboBox1.AddItem "Sanitaires mixte HMY Group"                  'ListIndex = 30
    ComboBox1.AddItem "Vestiaires Homme Menuiserie"                  'ListIndex = 31
    ComboBox1.AddItem "Sanitaires Handicapé Show room"                  'ListIndex = 32
    ComboBox1.AddItem "Vestiaires LA"                  'ListIndex = 33
    ComboBox1.AddItem "Vestiaires Expédition"                  'ListIndex = 34
    ComboBox1.AddItem "Sanitaires Femme Ancien Accueil"                  'ListIndex = 35
    ComboBox1.AddItem "Sanitaires Homme Etage SAS"                  'ListIndex = 36
    ComboBox1.AddItem "Sanitaires Femme SAS"                  'ListIndex = 37

    'Use drop-down list
    ComboBox1.Style = fmStyleDropDownList
    'Combo box values are ListIndex values
    ComboBox1.BoundColumn = 0
    'Set combo box to first entry
    'ComboBox1.ListIndex = 0
        
'ComboBox
  ComboBox2.AddItem "Débouchage des toilettes" 'ListIndex = 0
  ComboBox2.AddItem "Débouchage des douches" 'ListIndex = 1
  ComboBox2.AddItem "Autre" 'ListIndex = 2
  ComboBox2.AddItem "chasse d 'eau" 'ListIndex = 3
  ComboBox2.AddItem "evier bouché" 'ListIndex = 4
  ComboBox2.AddItem "Néon" 'ListIndex = 5
  ComboBox2.AddItem "presto" 'ListIndex = 6
  ComboBox2.AddItem "plafond" 'ListIndex = 7
  ComboBox2.AddItem "Savon à main" 'ListIndex = 8
  ComboBox2.AddItem "Chauffe eau" 'ListIndex = 9
  ComboBox2.AddItem "Syphon" 'ListIndex = 10
  ComboBox2.AddItem "fuite evier" 'ListIndex = 11
  ComboBox2.AddItem "Toilette fuite" 'ListIndex = 12

    'Use drop-down list
    ComboBox2.Style = fmStyleDropDownList
    'Combo box values are ListIndex values
    ComboBox2.BoundColumn = 0

End Sub










4 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
25 oct. 2018 à 20:30
Bonjour,

VBA n'est pas trop ma tasse de thé, cependant, je peux t'aider à optimiser "un peu" ton code.

ceci

Private Sub ComboBox1_Change() 

  Select Case ComboBox1.Value 

    Case 0 'Mixte informatique 
        Désignation = 0
    
    Case 1 'Sanitaires Mixte informatique IT 
        Désignation = 1 

    Case 2 'Sanitaires Homme CH1 
         Désignation = 2 

    Case 3 'Sanitaires Femme informatique 
        Désignation = 3 

    Case 4 'Sanitaires Homme CH2 
        Désignation = 4 

     Case 5 'Vestiaires CH2 
        Désignation = 5 

     Case 6 'CH1 
        Désignation = 6 

     Case 7 'Sanitaires Homme LA 
        Désignation = 7 

     Case 8 'Sanitaires Handicapé Brut 
        Désignation = 8 

     Case 9 'Sanitaires Femme Brut 
         Désignation = 9 

     Case 10 'Sanitaires Homme Brut 
        Désignation = 10 

    Case 11 'Vestiaires Brut 
       Désignation = 11 

   Case 12 'Sanitaires Homme petites series 
     Désignation = 12 

   Case 13 'Sanitaires Femme petites series 
      Désignation = 13 

   Case 14 'Sanitaires Homme Expédition 
       Désignation = 14 
  
   Case 15 'Sanitaires Femme Expédition 
      Désignation = 15 

   Case 16 'Sanitaires Homme Blanc 
     Désignation = 16 
   
   Case 17 'Vestiaires Blanc 
     Désignation = 17 

   Case 18 'Sanitaires Handicapé Menuiserie 
     Désignation = 18 

   Case 19 'Sanitaires Femme Menuiserie 
     Désignation = 19 

   Case 20 'Sanitaires Homme Menuiserie 
     Désignation = 20 

   Case 21 'Sanitaires Femme Show room 
     Désignation = 21 

   Case 22 'Sanitaires Homme Show room 
     Désignation = 22 

   Case 23 'Sanitaires Homme HMY Group 
     Désignation = 23 

   Case 24 'Sanitaires Femme HMY Group 
     Désignation = 24 

   Case 25 'Sanitaires Femme Etage SAS 
     Désignation = 25 

   Case 26 'Sanitaires Mixte Food Décentralisé 
     Désignation = 26 

   Case 27 'Sanitaires Homme Ancien Accueil 
     Désignation = 27 

   Case 28 'Sanitaires Homme SAS 
     Désignation = 28 

   Case 29 'Sanitaires Mixte Food Centralisé 
     Désignation = 29 

   Case 30 'Sanitaires mixte HMY Group 
      Désignation = 30 

   Case 31 'Vestiaires Homme Menuiserie 
     Désignation = 31 

   Case 32 'Sanitaires Handicapé Show room 
      Désignation = 32 

   Case 33 'Vestiaires LA 
     Désignation = 33 

   Case 34 'Vestiaires Expédition 
     Désignation = 34 

   Case 35 'Sanitaires Femme Ancien Accueil 
     Désignation = 35 

   Case 36 'Sanitaires Homme Etage SAS 
     Désignation = 36 

   Case 37 'Sanitaires Femme SAS 
     Désignation = 37 

  End Select 
End Sub 


devrait se réduire à
Private Sub ComboBox1_Change() 

  Désignation = ComboBox1.ListIndex

End Sub 


De même pour le 2eme combobox
Private Sub ComboBox2_Change() 
   Domaine =  ComboBox2.Value 
End Sub


Note que pour le premier j'ai utilisé ListIndex et pas Value, ton erreur d'exécution vient peut être de là.
Avec Value, tu mets le texte dans la variable, si plus loin tu faits des calculs comme si c'était un entier, ça marche pas.

PS à l'avenir, pour poster un code facilement lisible et donc augmenter tes chances d'obtenir une réponse, utilise la coloration syntaxique voir https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 oct. 2018 à 10:26
Bonjour,

avec un peu de texte en jaune
Qu'elle ligne est surlignée en jaune?
Si c'est celle-ci :
If (ComboBox1.Value <> "" And ComboBox2.Value <> "" And TextBox1.Value <> "" And TextBox2.Value <> "" And TextBox3.Value <> "") Then

Cela signifie qu'un des objets suivants ne porte pas le même nom :
ComboBox1
ComboBox2
TextBox1
TextBox2
TextBox3

Salut Whismeril, Comment va?
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
26 oct. 2018 à 13:02
Yop bien et toi?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 oct. 2018 à 13:03
Parfait!
tout va bien, merci.
0
c'est bon c'est réglé un grand merci à vous
0
Ok merci pour tout, je vais essayer avec les modifications et je reviens vers vous
0
azeuur31 Messages postés 12 Date d'inscription mardi 30 octobre 2018 Statut Membre Dernière intervention 6 décembre 2018
Modifié le 31 oct. 2018 à 10:35
Maintenant, j'essaye de lier une combo et un textb.
Le principe est lorsque je remplis mon formulaire je choisi un item dans la combo et une donné s'affiche dans le text automatiquement avec une autre feuille de donné ou dans la colonne A il y a le désignation et colonne B le numéro

Voici ma compo que je n'arrive pas à faire fonctionné:

Dim C As Range
Dim i As Byte
Dim FirstAddress As String
    Me.TextBox1 = ""
    
    With Worksheets("Database")
        'Cherche l'item dans la colonne A qui contient la valeur égale à celle de ComboBox1
        Set C = .Columns("A").Find(Me.ComboBox1.Value, .Range("A1").End(xlDown), xlValues, xlWhole)
        'Si cette item existe, alors ...
        If Not C Is Nothing Then
            'On note la valeur de cette première cellule
            FirstAddress = C.Address
            'On entre dans une boucle
            Do
                'On utilise la variable i pour noter le nombre d'incréments.
                'Ce nombre est utilisé pour limiter le nombre d'itération à 2 (nombre de TextBox)
                i = i + 1
                'On affecte la valeur associée (colonne B) à la TextBox qui correspond à l'indice i
                Me.Controls("Textbox" & i).Value = C.Offset(0, 1)
                'On poursuit la recherche
                Set C = Columns("A").FindNext(C)
                'On reprend le traitement à condition que :
                '- il existe une autre cellule qui contient une valeur égale à celle de ComboBox1
                '- le nombre d'itération est inférieur à 2
                '- la cellule trouvée est différente de la première
            Loop While Not C Is Nothing And i < 2 And C.Address <> FirstAddress
        End If
    End With
End Select
End Sub


Jai fais la compo avec l'aide d'un référenciel trouvé vite fais

Merci d'avance

PS: je ne serai pas contre des explications de ce qui ne va pas ou si possible des cours en fin je m'en sers sur exel, mon entreprise n'utilise pas acces
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
31 oct. 2018 à 10:38
Bonjour,

Autre question = autre sujet.
Merci de reformuler cette question dans un nouveau sujet.
0