Zone de liste déroulante - Problème ajout/suppression ligne

Bonsoir,

Je créé un post parce que je ne trouve aucune réponse sur plein de forum et c'est assez urgent pour le travail car c'est pour l'outil de travail de mon bureau.

Je vais essayer d'être assez clair. Pour résumer la situation :

  • J'ai une liste de plusieurs intitulés
  • J'ai créé une zone de liste déroulante (et non pas une simple liste déroulante créée avec les validations de données)
  • La liste des intitulés sert comme plage d'entrée.
  • La cellule liée peut être n'importe quelle cellule vide d'une feuille.

Le problème, c'est que lorsque j'insère ou supprime une ou plusieurs ligne(s) dans la liste des intitulés, le choix que j'avais fait dans la zone de liste déroulante se trouve décalé et ne reste pas fixe car la valeur de la cellule liée, elle, reste fixe...

J'aimerais donc savoir si il existe un moyen pour que le choix fait dans la zone de liste déroulante reste fixe peu importe si on insère ou supprime des lignes... J'ai essayé de chercher des solutions par moi-même mais je ne trouve pas...

Si jamais il existe un moyen, le top du top serait que ça n'alourdisse pas trop le fichier car il est déjà très volumineux.

Je joins un fichier excel "exemple" très simple pour que ça soit plus clair et que vous puissiez modifier si vous trouvez une solution. Il y a 2 feuilles : la première pour la situation initiale, la deuxième pour lorsqu'on ajoute une ligne.

Merci d'avance pour vos futures réponses,

Bonne soirée.

Guillaume

Bonsoir Guillaume,

bienvenue parmi nous!

Voici une solution! Comme je préfère les ActiveX, j'ai installé une 2e ComboBox qui charge ta liste d'intitulés à l'activation.

Clique et vois par toi-même! 8)

A+

Merci pour cette réponse rapide et cet accueil

J'ai regardé et essayé de comprendre ce que tu as fait, en vain . Et ne connaissant pas trop, voire pas du tout, ActiveX c'est pire

Ça serait possible d'avoir une explication stp ?

Autrement, pour remettre aussi dans le contexte, j'avais choisi une zone de liste déroulante de formulaire car on pouvait choisir le nombre de lignes à afficher quand on ouvre la liste : ce qui est très pratique car, comme on fait des devis, c'est plus facile pour retrouver un prix au milieu de plein d'autres.

J'avais aussi une question par rapport aux mises en formes dans une liste mais je chercherai encore un peu et je publierai un autre sujet ciblé là-dessus si je ne trouve vraiment pas de réponses.

Je suis toujours ouvert à d'autres propositions s'il en existe même si je pense que ce que je demande est assez compliqué à réaliser.

Bonsoir Guillaume,

Ça ne me dit pas si ça te convient!?

En résumé :

Private Sub Worksheet_Activate()
'
'A l'ouverture de la feuille2, je vide la Combo
Me.cbbIntitulés.Clear
'Je calcule la dernière ligne de ta liste d'intitulé
iRow = Range("B" & Rows.Count).End(xlUp).Row
'Boucle de la première à la dernière ligne de cette liste
For x = 5 To iRow
    'si l'intitulé existe, je l'ajoute à la Combo
    If Cells(x, 2) <> "" Then Me.cbbIntitulés.AddItem Cells(x, 2)
Next
'
End Sub

Ensuite, quand tu cliques dans la Combo

Private Sub cbbIntitulés_Change()
'
Dim rCel As Range
'
'je calcule la colonne-résultat la mets en incolore
iRow = Range("B" & Rows.Count).End(xlUp).Row
Range("B5:B" & iRow).Interior.Color = xlNone
'je note la valeur affichée dans la Combo...
sFlag = Me.cbbIntitulés.Value
'...et je note le chiffre à gauche (évidemment, ici, il n'y a qu'un chiffre : c'est facile!
iRow1 = Left$(sFlag, 1)
'je cherche ce chiffre dans les intitulés de la liste pour noter sa cellule...
Set rCel = Range("B5:B" & iRow).Find(iRow1, Lookat:=xlPart)
'...dont je note la ligne...
iRow2 = rCel.Row
'...histoire de la souligner de gris!
Cells(iRow2, 2).Interior.Color = RGB(215, 215, 215)
'
End Sub

Très rudimentaire! Il faudrait qu'un crack s'en mêle! On apprend beaucoup à lire leur prose!  ;;) 

A+

Merci,

Ben ça pourrait peut-être aller mais par moment, ça bug... Il faut savoir aussi que les lignes ajoutée seront remplies avec des intitulés aussi.

Et comment faire pour qu'une cellule fasse référence au choix de la liste ? (Comme une recherche v par exemple)

Salut Guillaume,

une image valant mille mots...

... avec détails, explications, exceptions, bizzareries,...

A+

Bonsoir,

J'ai essayé de modifier mon fichier sans ce que vous avez fait et j'ai essayé de mieux expliquer avec un exemple un peu plus concret.

Votre solution était pas trop mal mais comment faire référence au choix choisit dans cette liste avec la combobox ? (Pour la recherche v comme dans mon nouveau fichier)

Je joins le fichier excel qui comprend les explications de ce que j'aimerais avoir au final.

Si vous avez encore des questions si c'est pas assez clair, n'hésitez pas à les poser.

Merci,

Bonne soirée et bonnes fêtes

Salut Guillaume,

bon, c'est un domaine (formules, cellules liées,...) que je connais peu, voire très peu, et même pas du tout!

Y a-t-il une solution Excel propre à ta question : je n'en sais rien et il faudra attendre le passage d'un pro pour te renseigner!

Perso, VBA me sort de tous les soucis! 8) Donc, voici une solution VBA qui, attention, ne conviendra QUE pour ce tableau (coordonnées, nbre de colonnes,...).

Teste et si tu dois adapter cela à plusieurs tableaux de ton projet, nous verrons alors plus en détail.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Application.EnableEvents = False
If Target.Count <> 4 Then Exit Sub
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
iTRow = Target.Cells(1).Row
'
If Not Application.Intersect(Target, Range("A5:D" & iRow)) Is Nothing Then
    If iTRow - 4 < [H5] Then [H5] = [H5] + (iRow - [A1])
End If
[A1] = iRow
'
Application.EnableEvents = True
'
End Sub

A+

Rechercher des sujets similaires à "zone liste deroulante probleme ajout suppression ligne"