Problème correspondance formulaire vba excel
Résolu/Fermé
coraliie.c
Messages postés
22
Date d'inscription
jeudi 27 novembre 2014
Statut
Membre
Dernière intervention
9 décembre 2014
-
28 nov. 2014 à 10:34
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 28 nov. 2014 à 11:51
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 28 nov. 2014 à 11:51
A voir également:
- Problème correspondance formulaire vba excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Formulaire de réclamation facebook - Guide
- Word et excel gratuit - Guide
2 réponses
f894009
Messages postés
17206
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 novembre 2024
1 710
Modifié par f894009 le 28/11/2014 à 10:45
Modifié par f894009 le 28/11/2014 à 10:45
Bonjour,
Si vous donnees etaient dans des cellules consecutives, ceci marcherait
mais vos donnees sont dispersees ex: B,D,G,AE ..... il faut donc autant de lignes de code
ex:
Me.Controls("TextBox1")=Ws.Cells(Ligne,"B")
Me.Controls("TextBox1")=Ws.Cells(Ligne,"C")
que vous avez de textboxs ou vous ne nous dites pas tout !!!!
Si vous donnees etaient dans des cellules consecutives, ceci marcherait
For I = 1 To 23
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
Next I
mais vos donnees sont dispersees ex: B,D,G,AE ..... il faut donc autant de lignes de code
ex:
Me.Controls("TextBox1")=Ws.Cells(Ligne,"B")
Me.Controls("TextBox1")=Ws.Cells(Ligne,"C")
que vous avez de textboxs ou vous ne nous dites pas tout !!!!
coraliie.c
Messages postés
22
Date d'inscription
jeudi 27 novembre 2014
Statut
Membre
Dernière intervention
9 décembre 2014
28 nov. 2014 à 11:11
28 nov. 2014 à 11:11
J'ai bien modifié et rentré autant de ligne de code que j'avais de TextBox mais maintenant j'ai ce message d'erreur qui apparait :
Erreur de compilation - Variable non définie
et ça me surligne "Ligne" --> Me.Controls("TextBox1")=Ws.Cells(Ligne,"B")
Que faire ?
Voici ma modif :
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox1.ColumnCount = 1 'Pour la liste déroulante Code
Set Ws = Sheets("Habilitation Agent") '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 23
Me.Controls("TextBox1") = Ws.Cells(Ligne, "B")
Me.Controls("TextBox2") = Ws.Cells(Ligne, "C")
Me.Controls("TextBox3") = Ws.Cells(Ligne, "D")
Me.Controls("TextBox4") = Ws.Cells(Ligne, "L")
Me.Controls("TextBox5") = Ws.Cells(Ligne, "T")
Me.Controls("TextBox6") = Ws.Cells(Ligne, "AB")
Me.Controls("TextBox7") = Ws.Cells(Ligne, "AJ")
Me.Controls("TextBox8") = Ws.Cells(Ligne, "AR")
Me.Controls("TextBox9") = Ws.Cells(Ligne, "AZ")
Me.Controls("TextBox10") = Ws.Cells(Ligne, "G")
Me.Controls("TextBox11") = Ws.Cells(Ligne, "O")
Me.Controls("TextBox12") = Ws.Cells(Ligne, "W")
Me.Controls("TextBox13") = Ws.Cells(Ligne, "AE")
Me.Controls("TextBox14") = Ws.Cells(Ligne, "AM")
Me.Controls("TextBox15") = Ws.Cells(Ligne, "AU")
Me.Controls("TextBox16") = Ws.Cells(Ligne, "BC")
Me.Controls("TextBox17") = Ws.Cells(Ligne, "H")
Me.Controls("TextBox18") = Ws.Cells(Ligne, "P")
Me.Controls("TextBox19") = Ws.Cells(Ligne, "X")
Me.Controls("TextBox20") = Ws.Cells(Ligne, "AF")
Me.Controls("TextBox21") = Ws.Cells(Ligne, "AN")
Me.Controls("TextBox22") = Ws.Cells(Ligne, "AV")
Me.Controls("TextBox23") = Ws.Cells(Ligne, "BD")
Next I
End Sub
'Pour la liste déroulante Code
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 23
Me.Controls("TextBox1") = Ws.Cells(Ligne, "B")
Me.Controls("TextBox2") = Ws.Cells(Ligne, "C")
Me.Controls("TextBox3") = Ws.Cells(Ligne, "D")
Me.Controls("TextBox4") = Ws.Cells(Ligne, "L")
Me.Controls("TextBox5") = Ws.Cells(Ligne, "T")
Me.Controls("TextBox6") = Ws.Cells(Ligne, "AB")
Me.Controls("TextBox7") = Ws.Cells(Ligne, "AJ")
Me.Controls("TextBox8") = Ws.Cells(Ligne, "AR")
Me.Controls("TextBox9") = Ws.Cells(Ligne, "AZ")
Me.Controls("TextBox10") = Ws.Cells(Ligne, "G")
Me.Controls("TextBox11") = Ws.Cells(Ligne, "O")
Me.Controls("TextBox12") = Ws.Cells(Ligne, "W")
Me.Controls("TextBox13") = Ws.Cells(Ligne, "AE")
Me.Controls("TextBox14") = Ws.Cells(Ligne, "AM")
Me.Controls("TextBox15") = Ws.Cells(Ligne, "AU")
Me.Controls("TextBox16") = Ws.Cells(Ligne, "BC")
Me.Controls("TextBox17") = Ws.Cells(Ligne, "H")
Me.Controls("TextBox18") = Ws.Cells(Ligne, "P")
Me.Controls("TextBox19") = Ws.Cells(Ligne, "X")
Me.Controls("TextBox20") = Ws.Cells(Ligne, "AF")
Me.Controls("TextBox21") = Ws.Cells(Ligne, "AN")
Me.Controls("TextBox22") = Ws.Cells(Ligne, "AV")
Me.Controls("TextBox23") = Ws.Cells(Ligne, "BD")
Next I
End Sub
Erreur de compilation - Variable non définie
et ça me surligne "Ligne" --> Me.Controls("TextBox1")=Ws.Cells(Ligne,"B")
Que faire ?
Voici ma modif :
'Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
ComboBox1.ColumnCount = 1 'Pour la liste déroulante Code
Set Ws = Sheets("Habilitation Agent") '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 23
Me.Controls("TextBox1") = Ws.Cells(Ligne, "B")
Me.Controls("TextBox2") = Ws.Cells(Ligne, "C")
Me.Controls("TextBox3") = Ws.Cells(Ligne, "D")
Me.Controls("TextBox4") = Ws.Cells(Ligne, "L")
Me.Controls("TextBox5") = Ws.Cells(Ligne, "T")
Me.Controls("TextBox6") = Ws.Cells(Ligne, "AB")
Me.Controls("TextBox7") = Ws.Cells(Ligne, "AJ")
Me.Controls("TextBox8") = Ws.Cells(Ligne, "AR")
Me.Controls("TextBox9") = Ws.Cells(Ligne, "AZ")
Me.Controls("TextBox10") = Ws.Cells(Ligne, "G")
Me.Controls("TextBox11") = Ws.Cells(Ligne, "O")
Me.Controls("TextBox12") = Ws.Cells(Ligne, "W")
Me.Controls("TextBox13") = Ws.Cells(Ligne, "AE")
Me.Controls("TextBox14") = Ws.Cells(Ligne, "AM")
Me.Controls("TextBox15") = Ws.Cells(Ligne, "AU")
Me.Controls("TextBox16") = Ws.Cells(Ligne, "BC")
Me.Controls("TextBox17") = Ws.Cells(Ligne, "H")
Me.Controls("TextBox18") = Ws.Cells(Ligne, "P")
Me.Controls("TextBox19") = Ws.Cells(Ligne, "X")
Me.Controls("TextBox20") = Ws.Cells(Ligne, "AF")
Me.Controls("TextBox21") = Ws.Cells(Ligne, "AN")
Me.Controls("TextBox22") = Ws.Cells(Ligne, "AV")
Me.Controls("TextBox23") = Ws.Cells(Ligne, "BD")
Next I
End Sub
'Pour la liste déroulante Code
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 23
Me.Controls("TextBox1") = Ws.Cells(Ligne, "B")
Me.Controls("TextBox2") = Ws.Cells(Ligne, "C")
Me.Controls("TextBox3") = Ws.Cells(Ligne, "D")
Me.Controls("TextBox4") = Ws.Cells(Ligne, "L")
Me.Controls("TextBox5") = Ws.Cells(Ligne, "T")
Me.Controls("TextBox6") = Ws.Cells(Ligne, "AB")
Me.Controls("TextBox7") = Ws.Cells(Ligne, "AJ")
Me.Controls("TextBox8") = Ws.Cells(Ligne, "AR")
Me.Controls("TextBox9") = Ws.Cells(Ligne, "AZ")
Me.Controls("TextBox10") = Ws.Cells(Ligne, "G")
Me.Controls("TextBox11") = Ws.Cells(Ligne, "O")
Me.Controls("TextBox12") = Ws.Cells(Ligne, "W")
Me.Controls("TextBox13") = Ws.Cells(Ligne, "AE")
Me.Controls("TextBox14") = Ws.Cells(Ligne, "AM")
Me.Controls("TextBox15") = Ws.Cells(Ligne, "AU")
Me.Controls("TextBox16") = Ws.Cells(Ligne, "BC")
Me.Controls("TextBox17") = Ws.Cells(Ligne, "H")
Me.Controls("TextBox18") = Ws.Cells(Ligne, "P")
Me.Controls("TextBox19") = Ws.Cells(Ligne, "X")
Me.Controls("TextBox20") = Ws.Cells(Ligne, "AF")
Me.Controls("TextBox21") = Ws.Cells(Ligne, "AN")
Me.Controls("TextBox22") = Ws.Cells(Ligne, "AV")
Me.Controls("TextBox23") = Ws.Cells(Ligne, "BD")
Next I
End Sub
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
28 nov. 2014 à 11:51
28 nov. 2014 à 11:51
Bonjour,
Comme I n'est plus utilisé, il faut supprimer la boucle For I=...
Ensuite dans UserForm_Initialize (donc à l'ouverture du formulaire) Ligne n'est effectivement pas définie dans ton code. Pourquoi le serait-il d'ailleurs ? Dans cette procédure, je ne pense pas qu'il faille initialiser les TextBox.
A+
Comme I n'est plus utilisé, il faut supprimer la boucle For I=...
Ensuite dans UserForm_Initialize (donc à l'ouverture du formulaire) Ligne n'est effectivement pas définie dans ton code. Pourquoi le serait-il d'ailleurs ? Dans cette procédure, je ne pense pas qu'il faille initialiser les TextBox.
A+
28 nov. 2014 à 10:48
Je vais essayer ça !
Il me semblait bien qu'il que je renseigne les colonne quelque part mais je ne savais pas ou et comment !
Modifié par f894009 le 28/11/2014 à 10:51
Il me semblait bien qu'il que je renseigne les colonne quelque part mais je ne savais pas ou et comment ! Plait-il ??????? Z'etes sur que ca veut dire quelque chose
28 nov. 2014 à 10:57
Il me semblait bien qu'il fallait que je renseigne les colonnes quelque part mais je ne savais pas ou et comment.
Du coup, j'imagine qu'il faut aussi que je modifie les lignes en gras de ce code :
'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, "A") = ComboBox1
For I = 1 To 23
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
Par contre je ne sais pas quoi modifier exactement...