Problème USERFORM VBA

Bonjour tout le monde,

je suis novice en VBA, et je sollicite vos compétences et votre savoir faire pour mon petit souci sur excel.

En suivant quelques Tutorials, j'espère pouvoir réaliser un Userform qui fait office de la saisie et la modification des données sur un tableau de 28 colonnes, sachant que mon userform comprend des Combobox modifiables et d'autres avec des choix de listes déroulantes.

au niveau de la saisie ... aucun problème, mais quand je sélectionne par exemple un élément de ma liste déroulante Combobox1 (code client), je n'ai que les contenus de mes textbox qui est reprit sur le userform, Hors que mes Combobox ne prennent pas les valeurs des cellules qui leurs correspondent comme les textbox.

j'ai aussi un problème au niveau de (For I = 1 To 12) une fois je dépasse 12 (qui correspond selon moi au nombre de mes colonnes qui sont notmalement 28 dans mon cas) et que je met 13 ou plus j'ai (erreur d’exécution).

après plusieurs recherches sur internet, il m'est été suggérer de créer un autre USERFORM pour la modification de mes données déjà saisie, et garder mon actuel userform que je vous communique ci-joint que pour la saisie ou la consultation.

Si quelqu'un a une meilleurs idée, je lui serais très reconnaissant.

Merci d'avance

Bonjour

je suis novice en VBA,

A la vue de ton fichier et des codes qui y sont, j'en doute …

Merci de nous dire si tu as déjà posé cette question sur un autre forum. Cela évite de consacrer du temps à chercher alors qu'une réponse t'est donnée ailleurs

Bonjour,

J'ai déjà traité un autre problème sur le même fichier, donc pas vraiment la même question, je peux même vous communiquer le lien en PM si vous voulez, en tout cas .... il s'agissait d'un décalage au niveau de la saisie des données (mauvais emplacements des données sur les colonnes lors d'une nouvelle saisie),

Oui je confirme que je suis novice en VBA, si non je bricole un peu sur le PHP & Mysql / HTML / HTML5 / CSS ... et je peux manipuler un autre code si j'ai un Tutorial bien fait (et c'est le cas avec VBA) et je ne vous cache pas que ça fait 1 mois que je travail sur ce userform, mais vu les contraintes de temps, je ne peux me concentrer dessus pour plus qu'une ou deux heures maximum par 3 jours.

Et si et aujourd'hui je vous sollicite de bien vouloir m'aider, c'est par ce que je ne peux pas abusé de la gentillesse des membres de l'autre forum qui m'ont aider à concevoir tout le code de mon fichier, et qui m'ont appris beaucoup de choses.

je reste à votre disposition pour tout complément d'informations, et je vous remercie pour votre intervention.

re

For I = 1 To 13

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)

Next I

Tu ne peux pas mettre 13 puisque tu n'as que 12 textbox. Donc normal que tu reçoives un message d'erreur

Mets de vraies données en ligne 1 puis ouvre l'usf, tu verras que les données ne sont bien placées dans les textbox. Il faut revoir le code Combobox1 change

Bonjour,

au secoure, j'ai besoin de savoir quoi mettre sur mon ComboBox1_Change(), je n'ai mis que mes combobox en les affectant aux colonnes qui leurs correspondent,

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, "C")

ComboBox3 = Ws.Cells(Ligne, "D")

ComboBox4 = Ws.Cells(Ligne, "E")

ComboBox5 = Ws.Cells(Ligne, "G")

ComboBox6 = Ws.Cells(Ligne, "L")

ComboBox7 = Ws.Cells(Ligne, "M")

ComboBox8 = Ws.Cells(Ligne, "N")

ComboBox9 = Ws.Cells(Ligne, "P")

ComboBox10 = Ws.Cells(Ligne, "Q")

ComboBox11 = Ws.Cells(Ligne, "S")

ComboBox12 = Ws.Cells(Ligne, "U")

ComboBox13 = Ws.Cells(Ligne, "V")

ComboBox14 = Ws.Cells(Ligne, "W")

ComboBox15 = Ws.Cells(Ligne, "Y")

ComboBox16 = Ws.Cells(Ligne, "X")

For I = 1 To 12

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)

Next I

End Sub

mais quand je selectionne un client par exemple en choisissant son code, mes combobox reprennent leurs valeurs correctes, alors que mes textbox vraiment sont décalés.

Au niveau de mon code de modification, je change le nom du client, et c'est le Numero du bien qui change en plaçant son ancienne valeur à la colonne "date"

mon code modification est celui ci :

'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 12

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

donc je sais pas comment dire à VBA d'aller modifier exactement les Combobox et les TextBox que je modifie sur le Userform, si vous pouvez m'aider, je vous en serais très reconnaissant.

Rebonjour,

j'ai pu résoudre le problème de au niveau du combobox1 change() maintenant en sélectionnant un code client, j'ai tout mes Combobox et Texbox qui sont affiché au bon emplacement, voici la modification que j'ai effectué sur le code (coup de chance) :

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, "C")

ComboBox3 = Ws.Cells(Ligne, "D")

ComboBox4 = Ws.Cells(Ligne, "E")

ComboBox5 = Ws.Cells(Ligne, "G")

ComboBox6 = Ws.Cells(Ligne, "L")

ComboBox7 = Ws.Cells(Ligne, "M")

ComboBox8 = Ws.Cells(Ligne, "N")

ComboBox9 = Ws.Cells(Ligne, "P")

ComboBox10 = Ws.Cells(Ligne, "Q")

ComboBox11 = Ws.Cells(Ligne, "S")

ComboBox12 = Ws.Cells(Ligne, "U")

ComboBox13 = Ws.Cells(Ligne, "V")

ComboBox14 = Ws.Cells(Ligne, "W")

ComboBox15 = Ws.Cells(Ligne, "Y")

ComboBox16 = Ws.Cells(Ligne, "X")

For I = 1 To 12

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)

TextBox1 = Ws.Cells(Ligne, "F")

TextBox2 = Ws.Cells(Ligne, "H")

TextBox3 = Ws.Cells(Ligne, "I")

TextBox4 = Ws.Cells(Ligne, "J")

TextBox5 = Ws.Cells(Ligne, "K")

TextBox6 = Ws.Cells(Ligne, "O")

TextBox7 = Ws.Cells(Ligne, "R")

TextBox8 = Ws.Cells(Ligne, "T")

TextBox9 = Ws.Cells(Ligne, "Z")

TextBox10 = Ws.Cells(Ligne, "AA")

TextBox11 = Ws.Cells(Ligne, "AB")

TextBox12 = Ws.Cells(Ligne, "AC")

Next I

End Sub

mais je suis toujours bloqué au niveau de la modification, j'ai essayé de faire la même chose que le Combobox change(), mais il s'agit d'un énorme décalage après validation de la modification.

Mon code de modification est :

'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

ComboBox2 = Ws.Cells(Ligne, "C")

ComboBox3 = Ws.Cells(Ligne, "D")

ComboBox4 = Ws.Cells(Ligne, "E")

ComboBox5 = Ws.Cells(Ligne, "G")

ComboBox6 = Ws.Cells(Ligne, "L")

ComboBox7 = Ws.Cells(Ligne, "M")

ComboBox8 = Ws.Cells(Ligne, "N")

ComboBox9 = Ws.Cells(Ligne, "P")

ComboBox10 = Ws.Cells(Ligne, "Q")

ComboBox11 = Ws.Cells(Ligne, "S")

ComboBox12 = Ws.Cells(Ligne, "U")

ComboBox13 = Ws.Cells(Ligne, "V")

ComboBox14 = Ws.Cells(Ligne, "W")

ComboBox15 = Ws.Cells(Ligne, "Y")

ComboBox16 = Ws.Cells(Ligne, "X")

For I = 1 To 12

Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)

TextBox1 = Ws.Cells(Ligne, "F")

TextBox2 = Ws.Cells(Ligne, "H")

TextBox3 = Ws.Cells(Ligne, "I")

TextBox4 = Ws.Cells(Ligne, "J")

TextBox5 = Ws.Cells(Ligne, "K")

TextBox6 = Ws.Cells(Ligne, "O")

TextBox7 = Ws.Cells(Ligne, "R")

TextBox8 = Ws.Cells(Ligne, "T")

TextBox9 = Ws.Cells(Ligne, "Z")

TextBox10 = Ws.Cells(Ligne, "AA")

TextBox11 = Ws.Cells(Ligne, "AB")

TextBox12 = Ws.Cells(Ligne, "AC")

Next I

End If

End Sub

SVP .... , qu'est ce qui m’échappe à votre avis ?

Bonjour Simo025,

Ton problème vient de ton code "Modifier".

Pour modifier les cellules correspondantes à tes Combobox et tes Texbox, il faut que les informations aillent du formulaire vers les cellules et non l'inverse comme tu le mentionne dans le code.....

Cela devrait être :

Ws.Cells(Ligne, "I") = TextBox3

soit la valeur de la cellule égale la valeur de la texbox dans le cas présent...

Je n'ai pas trop le temps de m'y pencher pour l'instant (Travail oblige...) mais je reviens vers dès que possible mais va voire sur mon blog cela t'aidera peut-être

Sinon de joyeuse fêtes à tous les lecteurs et membres du forum...

Ah ! quand ça commence à gamberger .... on ne peut plus s'arrêter et ça prend la tête....

Donc voici le code à modifier :

'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, "C") = ComboBox2.Value
Ws.Cells(Ligne, "D") = ComboBox3.Value
 Ws.Cells(Ligne, "E") = ComboBox4.Value
 Ws.Cells(Ligne, "G") = ComboBox5.Value
 Ws.Cells(Ligne, "L") = ComboBox6.Value
 Ws.Cells(Ligne, "M") = ComboBox7.Value
 Ws.Cells(Ligne, "N") = ComboBox8.Value
 Ws.Cells(Ligne, "P") = ComboBox9.Value
 Ws.Cells(Ligne, "Q") = ComboBox10.Value
  Ws.Cells(Ligne, "S") = ComboBox11.Value
  Ws.Cells(Ligne, "U") = ComboBox12.Value
 Ws.Cells(Ligne, "V") = ComboBox13.Value
 Ws.Cells(Ligne, "W") = ComboBox14.Value
 Ws.Cells(Ligne, "Y") = ComboBox15.Value
  Ws.Cells(Ligne, "X") = ComboBox16.Value
  Ws.Cells(Ligne, "F") = TextBox1.Value
 Ws.Cells(Ligne, "H") = TextBox2.Value
Ws.Cells(Ligne, "I") = TextBox3.Value
Ws.Cells(Ligne, "J") = TextBox4.Value
Ws.Cells(Ligne, "K") = TextBox5.Value
Ws.Cells(Ligne, "O") = TextBox6.Value
Ws.Cells(Ligne, "R") = TextBox7.Value
Ws.Cells(Ligne, "T") = TextBox8.Value
Ws.Cells(Ligne, "Z") = TextBox9.Value
Ws.Cells(Ligne, "AA") = TextBox10.Value
Ws.Cells(Ligne, "AB") = TextBox11.Value
Ws.Cells(Ligne, "AC") = TextBox12.Value
 End If
End Sub

A bientôt

Re Bonjour,

je sais pas ce que j'allais faire sans vous, et je ne sais pas comment vous remercier, et1000lio Savoir faire et réactivité, chapeau Monsieur.

mon problème est résolu grâce à tous les intervenants de ce super forum, Bonne continuation je change à présent le statut de cette discussion en "Résolu".

Merci infiniment.

Bonjour à tous

Comme Simon je suis un bon vieux débutant galérien de l'extrême en VBA.

Comme vous le verrez probablement j'ai suivi un tutorial pour créer un formulaire de saisie et de correction de donnée pour un classeur excel..

aujourd'hui je me trouve bloqué dans la suite du développement et je suis loin d'avoir terminé. J'ai une erreur 91 sur ce code la et j'avoue ne pas comprendre et ne pas avoir trouvé la réponse via google... En gros je voudrais qu'en sélectionnant le nom dans ma combobox11 il me remplisse mes autres combobox, je me suis pas encore attaqué aux textbox...ni aux différents boutons....mais une fois que j'aurais débloquer ce code je pourrais avancer...

Je poste ici car il me semble que je suis proche de ce que voulais faire Simon et je ne vois pas trop de différence ici ...

Peut être pourrait vous pointer ma grossière erreur... je joins le fichier..

D'avance merci

Private Sub ComboBox11_Change()
    Dim Ligne As Long
    Dim I As Integer
    If Me.ComboBox11.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox11.ListIndex + 4
    ComboBox1 = Ws.Cells(Ligne, "E")
    ComboBox2 = Ws.Cells(Ligne, "I")
    ComboBox4 = Ws.Cells(Ligne, "K")
    ComboBox5 = Ws.Cells(Ligne, "L")
    ComboBox6 = Ws.Cells(Ligne, "M")
    ComboBox7 = Ws.Cells(Ligne, "N")
    ComboBox8 = Ws.Cells(Ligne, "O")
    ComboBox9 = Ws.Cells(Ligne, "R")
    For I = 1 To 7
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 4)
    Next I
End Sub
37statboulot.zip (46.58 Ko)

J'ai modifié comme cela et maintenant j'ai mes combobox de rempli mais pas mes textbox avec une erreur sur la ligne Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2) objet spécifié introuvable...

Private Sub ComboBox11_Change()

    Dim Ligne As Long
    Dim I As Integer
    Set Ws = Sheets("Feuil1")
    If Me.ComboBox11.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox11.ListIndex + 4
    ComboBox1 = Ws.Cells(Ligne, "E")
    ComboBox2 = Ws.Cells(Ligne, "I")
    ComboBox4 = Ws.Cells(Ligne, "K")
    ComboBox5 = Ws.Cells(Ligne, "L")
    ComboBox6 = Ws.Cells(Ligne, "M")
    ComboBox7 = Ws.Cells(Ligne, "N")
    ComboBox8 = Ws.Cells(Ligne, "O")
    ComboBox9 = Ws.Cells(Ligne, "R")
    For I = 1 To 7
    Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
    TextBox1 = Ws.Cells(Ligne, "C")
    TextBox5 = Ws.Cells(Ligne, "G")
    TextBox10 = Ws.Cells(Ligne, "J")
    TextBox2 = Ws.Cells(Ligne, "B")
    TextBox8 = Ws.Cells(Ligne, "A")
    TextBox4 = Ws.Cells(Ligne, "D")
    TextBox9 = Ws.Cells(Ligne, "F")
    Next I

End Sub

Bonjour et bienvenu(e)

Ce n'est pas glop de squatter un autre post, même si celui-ci traite d'un problème semblabe

Tu peux ouvrir un autre sujet en faisant référence à celui-ci

En attendant pour débloquer

Rechercher des sujets similaires à "probleme userform vba"