Problème de formulaire VBA

Bonjour,

je vient de créer un formulaire sous VBA qui n'est pas finalisé en présentation avec une base de données sur 38 colonnes (A à AL)

il y a 38 Textbox et 1 Combobox pour la base de recherche.

La Combobox est en colonne F et les textbox sont de A à E et de G à AL.

Lorsque je test le formulaire, met réponses sont décalés de 1 et la colonne A ne s'affiche pas lors que je sélectionne un N° dans la Combobox.

Est je ne comprend pas le pourquoi du comment, si une personne pouvais m'expliquer

Ci joint un modèle: https://www.cjoint.com/c/EHyn3VhFijF

Merci pour votre aide

Bonjour,

Remplace le code de ta ComboBox :

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 37

        'ici, décalage d'une colonne (I + 1) donc colonne A pas prise en compte
        Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)

    Next I

    'comme c'est une particularité, à traiter en dehords de la boucle
    Me.Controls("TextBox38") = Ws.Cells(Ligne, 1)

End Sub

Hervé.

Bonjour Hervé,

je te remercie pour ton aide, j'ai bien copié le VBA dans la partie formulaire et changé les 1 to 38 par 1 to 37dans formuaire et menu déroulant

mais j'ai un bug au niveau du menu déroulant???

Est ce normal? ou je fait une fausse manipulation?

Encore merci pour ton aide

Amitié

Mathias

Bonjour,

Tu as bien remplacé le code existant par le code que je t'ai donné ? Si tu as fait de remplacements éparses, il ce peut que tu est oublié quelques chose.

Hervé.

Bonjour Hervé,

j'ai bien fait le remplacement du VBA, changé les 1 to 37 et j'ai un bug sur la suite (j'ai mis la ligne en gras) du VBA, ci joint la copie de la formule.

Cdt

Mathias

' Les lignes qui débutent par une apostrophe identifient un commentaire c'est-à-dire du texte exploitable par le lecteur et non par le programme VBA

' Objectif : documenter le code VBA pour le rendre plus compréhensible.

'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme

Option Explicit

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 CommandButton1_Click()

Unload Me

End Sub

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 37

'ici, décalage d'une colonne (I + 1) donc colonne A pas prise en compte

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

Next I

'comme c'est une particularité, à traiter en dehords de la boucle

Me.Controls("TextBox38") = Ws.Cells(Ligne, 1)

End Sub

'Correspond au programme du bouton MODIFIER

Private Sub CommandButton2_Click()

If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then

Dim Ligne As Long

Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection

Ligne = Me.ComboBox1.ListIndex + 2

For I = 1 To 37

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 37

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

Next I

End Sub

Sub FORMULAIRE() 'ou le nom que vous avez défini pour la macro

UserForm1.Show vbModeless

End Sub

Private Sub CommandButton3_Click()

Dim L As Integer

If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message

L = Sheets("Bdd Club").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("F" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A

Range("A" & L).Value = TextBox1

Range("B" & L).Value = TextBox2 'Insère la donnée de la textbox1 dans la colonne B et à suivre....

Range("C" & L).Value = TextBox3

Range("D" & L).Value = TextBox4

Range("E" & L).Value = TextBox5

Range("F" & L).Value = TextBox6

Range("G" & L).Value = TextBox7

Range("H" & L).Value = TextBox8

Range("I" & L).Value = TextBox9

Range("J" & L).Value = TextBox10

Range("K" & L).Value = TextBox11

Range("L" & L).Value = TextBox12

Range("M" & L).Value = TextBox13

Range("N" & L).Value = TextBox14

Range("O" & L).Value = TextBox15

Range("P" & L).Value = TextBox16

Range("Q" & L).Value = TextBox17

Range("R" & L).Value = TextBox18

Range("S" & L).Value = TextBox19

Range("T" & L).Value = TextBox20

Range("U" & L).Value = TextBox21

Range("V" & L).Value = TextBox22

Range("W" & L).Value = TextBox23

Range("X" & L).Value = TextBox24

Range("Y" & L).Value = TextBox25

Range("Z" & L).Value = TextBox26

Range("AA" & L).Value = TextBox27

Range("AB" & L).Value = TextBox28

Range("AC" & L).Value = TextBox29

Range("AD" & L).Value = TextBox30

Range("AE" & L).Value = TextBox31

Range("AF" & L).Value = TextBox32

Range("AG" & L).Value = TextBox33

Range("AH" & L).Value = TextBox34

Range("AI" & L).Value = TextBox35

Range("AJ" & L).Value = TextBox36

Range("AK" & L).Value = TextBox37

Range("AL" & L).Value = TextBox38

End If

'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

' Affiche une boîte de message

MsgBox ("Produit inséré dans fichier sélectionné") 'Vous informant que le présent contact est insérer dans votre tableau Excel.

Unload Me ' Vide et ferme l'Userform ( formulaire)

UserForm1.Show 'Affiche le formulaire

End Sub

Je viens de faire le test sur le classeur exemple et ça fonctionne parfaitement !

Reposte ton classeur modifié pour que je puisse tester.

Hervé.

Re bonjour Hervé,

ci joint le fichier modifié avec tes codes

https://www.cjoint.com/c/EHAn5FkNgFF

Encore un grand merci pour ton aide

Amitié

L'erreur est due au fait que tu as laissé la première version de l'évènement Change et donc "Nom ambigu détecté" !

Je te retourne le fichier.

Hervé.

Un grand merci a toi,

tous fonctionnent très parfaitement, j'ai plus qu'a continué l'évolution de l'outil et faire la mise en forme.

Je reviendrais surement pour d'autres questions, mais tes explications son clair (comme je suis débutant en VBA)

Bonne soirée

Bonjour Hervé,

pense tu que cela serait compliquer de modifier des textbox en combobox pour avoir des menu déroulant obligatoire??

Cdt

Mathias

Oups,

j' ai oublié de mettre le fichier en pièce jointe,

https://www.cjoint.com/c/EHBmnpRj7dG

J'ai créer les comboboxs et les liste déroulantes, il faudrais remplacer les Textbox (supprimer) par les cobobox avec un 2 dans l'intitulé.

Amitié


Oups,

j'ai oublié le fichier,

j'ai créer les combobox avec les menu déroulant qui fonctionne.

Le but est de supprimer les textbox et les remplacer par les combobox (intitulé avec un 2) de facon a pouvoir consulter et/ou alimenter la bdd

https://www.cjoint.com/c/EHBmnpRj7dG

Amitié

Mathias


Oups,

j'ai oublié le fichier,

j'ai créer les combobox avec les menu déroulant qui fonctionne.

Le but est de supprimer les textbox et les remplacer par les combobox (intitulé avec un 2) de facon a pouvoir consulter et/ou alimenter la bdd

https://www.cjoint.com/c/EHBmnpRj7dG

Amitié

Mathias

Bonjour,

pense tu que cela serait compliquer de modifier des textbox en combobox pour avoir des menu déroulant obligatoire??

Compliqué je dirais non mais pourquoi que des ComboBox ? Ces ComboBox servirait tous pour effectuer des recherche ?

Hervé.

Bonjour Hervé,

Le principe serait que le menu déroulant IDE serait pour la recherche, les autres avec un menu deroulant imposant un choix.

https://www.cjoint.com/c/EHCiKkwYKxg

J'ai créer les menus avec le même intitulé avec 2 a coté du nom

Amitié

Mathias

Rechercher des sujets similaires à "probleme formulaire vba"