Formmulaire modification avec combobox en cascade

Bonjour à tous,

Je suis novice en VBA et je n'ai pas trouvé ou pas réussis à faire le code de mon formulaire.

Je ne peux pas fournir mon fichier excel. Admettons que ma liste 1 se trouve dans la colonne A, ma liste 2 dans la colonne B, ma liste 3 dans la colonne C et mon élément à modifier dans la colonne D.

J'aimerais que la liste 2 se modifie en fonction de liste 1 et la liste 3 en fonction de la liste 2 mais je ne sais pas comment faire, pouvez-vous m'aider s'il vous plait ? Merci beaucoup,

Bonne journée !

capture

Bonjour,

un exemple ... qui te permettra sans doute d'en apprendre un peu plus

Merci pour votre réponse,

J'ai essayé mais je ne comprends pas une partie du code, selectionnée ci-dessous, pouvez-vous m’éclairez car lorsque j'essaye de faire fonctionner mon formulaire, il bloque sur la ligne : pivot = vArray((inLow + inHi) \ 2) en indiquant l'erreur d’exécution 9. Merci beaucoup.

Public Sub QuickSort(vArray As Variant, _
  Optional ByVal inLow As Long = -1, _
  Optional ByVal inHi As Long = -1)
  Dim pivot   As Variant
  Dim tmpSwap As Variant
  Dim tmpLow  As Long
  Dim tmpHi   As Long
  inLow = IIf(inLow = -1, LBound(vArray), inLow)
  inHi = IIf(inHi = -1, UBound(vArray), inHi)
  tmpLow = inLow
  tmpHi = inHi
  pivot = vArray((inLow + inHi) \ 2)
  While (tmpLow <= tmpHi)
     While (vArray(tmpLow) < pivot And tmpLow < inHi)
        tmpLow = tmpLow + 1
     Wend
     While (pivot < vArray(tmpHi) And tmpHi > inLow)
        tmpHi = tmpHi - 1
     Wend
     If (tmpLow <= tmpHi) Then
        tmpSwap = vArray(tmpLow)
        vArray(tmpLow) = vArray(tmpHi)
        vArray(tmpHi) = tmpSwap
        tmpLow = tmpLow + 1
        tmpHi = tmpHi - 1
     End If
  Wend
  If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi
  If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi
End Sub

Bonjour,

Sans voir à quoi ressemble ta base de donnée difficile de savoir à partir de quelle ligne ton tableau commence.

Pour la première partie : à chaque évènement de l'une de tes combobox il faut modifier les autres combobox :

Exemple : pour la combobox 1 ( Liste 1 ) évènement :

Private Sub ComboBox1_Change()

End Sub

… idem quand autres combobox changent.

Ensuite il faut dans un évement récuperer le Numéro de ligne ( le numéro de colonne étant 4 puisque colonne D )

Tu peux ajouter dans l'évenement une variable pour trouver le numéro de ligne :

exemple :

Dim Numligne as long ' déclaration

Numligne=Combobox1.listindex + X '( numéro ligne de la combo + X nombre de ligne avant que ton tableau commence )

'pour finir alimentation de la textbox "élément à modifier"

TextBox1 = Worksheets("nom de ta feuille").Cells(Numligne, 4).Value

Merci pour votre réponse,

J'ai essayé mais je ne comprends pas une partie du code, selectionnée ci-dessous, pouvez-vous m’éclairez car lorsque j'essaye de faire fonctionner mon formulaire, il bloque sur la ligne : pivot = vArray((inLow + inHi) \ 2) en indiquant l'erreur d’exécution 9. Merci beaucoup.

Ce code est un code générique qui permet de trier !

Dans l'immédiat, si tu n'as pas besoin de trier, dans ce cas supprime cette partie et supprime les lignes qui font appel à Quicksort.

Bonjour,

Désolé pour ma réponse tardive, j'ai essayé mais je n'arrive pas à faire fonctionner mon code, je vous joins un exemple, toutes mes plages se trouvent dans l'onglet "données" et mon formulaire permettrait de pouvoir modifier les éléments de la colonne "Nombre" dans l'onglet "BDD" en sélectionnant d'abord la couleur, puis une des nuances de cette couleur et enfin un des numéros de cette nuance.

13exemple.xlsx (15.64 Ko)

Bonjour

je ne voie pas de Userform

A+

Maurice

Bonsoir

voila un essai a voir

A+

Maurice

25exemple.xlsm (26.87 Ko)

Désolé pour ma réponse tardive, j'ai essayé mais je n'arrive pas à faire fonctionner mon code, je vous joins un exemple

Voici le code appliqué à ton exemple

25exemple.xlsm (29.32 Ko)

Bonjour,

Merci beaucoup pour vos aides Archer et Steelson !

J'ai continué avec ton exemple Steelson et je sais maintenant pourquoi je n'arrivais pas à faire fonctionner le code car je pensais bêtement qu'il fallait changer la lettre en fonction de la colonne dans chaque ligne " der = Sheets(onglet).Cells(Rows.Count, "A").End(xlUp).Row" !

Maintenant le code marche à la perfection grâce à toi, merci beaucoup !

Bonne journée

Rechercher des sujets similaires à "formmulaire modification combobox cascade"