problème vba et formule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

blancolie

XLDnaute Impliqué
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


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:
Bonjour PierreJean,

Merci pour ces renseignements. Drôle que le codage vba prend en compte ltout l'ensemble des colonnes w,x,y car elles ne font pas partie du codage. j'ai voulu les mettre sous formes de tableau pour qu'une nouvelle ligne se crée quand on ajoute ligne en plus dans la colonne V.

J'espère pouvoir créer ma saisie semi-automatique.

merci pour tout en cas. Cela me dépanne bien.
 
Bonsoir Pierrejean,

j'ai remarqué que quand j'efface les noms ds la colonne S et T, cela efface les formules ds le tableau 12.

je rencontre l''erreur erreur d'execution 1004 : la methode autofil" de l'objet "range" à échoué. cela arrive quand j'efface la cellule T2. ci joint le fichier exemple 1.

il y a t il possible de resoudre cela et def aire en sorte que la première ligne du tableau 12 ne soit jamais effacé ainsi que les formules.

en vou sremerciant
 

Pièces jointes

Re
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
If [S2] = "" And [T2] = "" Then [V2] = ""
With [V2] '1re cellule de restitution, ö adapterr
    If n Then
        .Resize(n) = liste
        .Resize(n).Name = "Liste" 'plage nomm_e
         Range("V" & n + 2 & ":Y" & Rows.Count).ClearContents
         ActiveSheet.ListObjects("Tableau12").Resize Range("$V$1:$Y$" & n + 1)
         If Range("T2") <> "" And Range("S2") <> "" Then Range("X2").AutoFill Destination:=Range("X2:X" & n + 1), Type:=xlFillDefault
    End If
'   .Offset(n).Resize(Rows.Count - n - .Row + 1).ClearContents  'RAZ en dessous
End With
Application.EnableEvents = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
362
Réponses
4
Affichages
480
Réponses
5
Affichages
410
Réponses
7
Affichages
106
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
233
Réponses
5
Affichages
340
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Retour