Bonjour le forum,
Ce code suivant me permet d'aller récupérer les données dans 2 colonnes pour faire une seule liste dans le but de créer une liste déroulante. Cela marche très bien. jai décidé de mettre en place une saisie semi-automatique mais je rencontre un problème. je ne sais pas si c'est lié au codage vba (codage qui n'est pas de moi que j'ai adapté à mon fichier, il y a peut-être ligne à rajouter. le soucis et ce qui est drôle, cela se passe toujours à la fin de ma colonne X (fréquence) quand je rajoute un nom dans une des 2 colonnes S (agents) et T (astreinte), dans la colonne fréquence à l'avant dernière ligne, je vois apparaître 2 fois 53 et je devrais voir 53 et 54 mais j'ai à la place une erreur formule colonne incohérente et si je choisit l'option restaurée en tant que formule de colonne calculéé alors la cela fonctionne.
avez vous une idée pour résoudre cela ?
merci
Ce code suivant me permet d'aller récupérer les données dans 2 colonnes pour faire une seule liste dans le but de créer une liste déroulante. Cela marche très bien. jai décidé de mettre en place une saisie semi-automatique mais je rencontre un problème. je ne sais pas si c'est lié au codage vba (codage qui n'est pas de moi que j'ai adapté à mon fichier, il y a peut-être ligne à rajouter. le soucis et ce qui est drôle, cela se passe toujours à la fin de ma colonne X (fréquence) quand je rajoute un nom dans une des 2 colonnes S (agents) et T (astreinte), dans la colonne fréquence à l'avant dernière ligne, je vois apparaître 2 fois 53 et je devrais voir 53 et 54 mais j'ai à la place une erreur formule colonne incohérente et si je choisit l'option restaurée en tant que formule de colonne calculéé alors la cela fonctionne.
avez vous une idée pour résoudre cela ?
merci
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim liste$(), tablo, e, n&
If FilterMode Then ShowAllData 'si la feuille est filtrée
'---liste à partir des colonnes sources---
ReDim liste(1 To Rows.Count, 1 To 1)
tablo = Range("S2", Range("S" & Rows.Count).End(xlUp)(3)) 'matrice, plus rapide, au moins 2 éléments,
For Each e In tablo
If e <> "" Then n = n + 1: liste(n, 1) = e
Next
tablo = Range("T2", Range("T" & Rows.Count).End(xlUp)(3)) 'matrice, plus rapide, au moins 2 éléments
For Each e In tablo
If e <> "" Then n = n + 1: liste(n, 1) = e
Next
'---restitution---
Application.EnableEvents = False
With [V2] '1ère cellule de restitution, à adapter
If n Then
.Resize(n) = liste
.Resize(n).Name = "Liste" 'plage nommée
End If
.Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents 'RAZ en dessous
End With
Application.EnableEvents = True
End Sub
Pièces jointes
Dernière édition: