XL 2010 Mettre à jour ma liste sous condition

Meloman

XLDnaute Occasionnel
Bonjour à tous

j'ai encore un petit soucis et je viens vous demander de l'aide

j'ai une liste en feuille Liste et en colonne A
une Feuille dans Dispo en Colonne B
et une dernière dans paramètre en colonne J

peut on ajouter dans ma Liste colonne A la valeur si le nom est présent à la fois dans dispos et Paramètre

en fait si valeur est présent dans dispos et Paramètre mais non présent dans onglet liste incrémenter le nom manquant dans liste .
et au contraire si dans dispo le nom est pas présent le retiré de la feuille liste

penser vous ce soit possible svp une sorte de bouton de mise à jour pour ma liste merci d'avance
 

Pièces jointes

  • teste1.xlsm
    9.8 KB · Affichages: 25

Meloman

XLDnaute Occasionnel
bonjour JHA je te remercie pour ton aide mais je recherche plus une solution par macro que j'arrive mieux à comprendre pour ce qui est du résulta c'est pas exactement cela car quand j'ajoute un nouveau nom dans dispo rien ne se passe dans liste pour rappel je souhaiterais quand un nouveau nom apparait dans dispo que ce dernier le compare dans paramètre et si il est présent il incrémente à la suite des autre nom dans liste je sais pas si j'ai été plus clair
 

Paf

XLDnaute Barbatruc
Bonjour à tous,

un essai macro:
VB:
Sub MajListe()
Dim D1, D2, D3, W1 As Worksheet, W2 As Worksheet, W3 As Worksheet
Dim T1, T2, T3, i As Long, Clé
Set D1 = CreateObject("Scripting.Dictionary")
Set D2 = CreateObject("Scripting.Dictionary")
Set D3 = CreateObject("Scripting.Dictionary")
Set W1 = Worksheets("Liste")
Set W2 = Worksheets("Dispo")
Set W3 = Worksheets("Parametre")
T1 = W1.Range("A4:A" & W1.Range("A" & Rows.Count).End(xlUp).Row)
T2 = W2.Range("B3:B" & W2.Range("B" & Rows.Count).End(xlUp).Row)
T3 = W3.Range("J2:J" & W3.Range("J" & Rows.Count).End(xlUp).Row)

For i = LBound(T1) To UBound(T1)
    D1(T1(i, 1)) = ""
Next
For i = LBound(T2) To UBound(T2)
    D2(T2(i, 1)) = ""
Next
For i = LBound(T3) To UBound(T3)
    D3(T3(i, 1)) = ""
Next
For Each Clé In D1.keys
    If Not D2.Exists(Clé) Then D1.Remove (Clé)
Next

For Each Clé In D2.keys
    If D3.Exists(Clé) Then D1(Clé) = ""
Next
W1.Range("A4:A" & W1.Range("A" & Rows.Count).End(xlUp).Row).ClearContents
W1.Range("A4").Resize(D1.Count, 1) = Application.Transpose(D1.keys)
End Sub

A+
 

Meloman

XLDnaute Occasionnel
Bonjour PaF merci c'est presque parfait le problème avec ta macro c'est que sous les nom j'ai d'autre liste qui apparaisse et quand il m’incrémente il prend depuis la dernière valeur peut on limité cela svp merci

Alors d'apres ce que j'ai put voir le probleme se poserais que pour
cette ligne

Code:
W1.Range("A4:A" & W1.Range("A16" & Rows.Count).End(xlUp).Row).ClearContents
 

Pièces jointes

  • Copie de teste1.xlsm
    17.5 KB · Affichages: 24
Dernière édition:

Paf

XLDnaute Barbatruc
re et bonjour Lone-wolf

@ Meloman: joignez le classeur tel qu'il est avant d'exécuter la macro.

je ne vois pas comment on se retrouve avec la ligne d'entête répétée à plusieurs reprises en feuille Liste, alors qu'elle n'est pas 'sélectionnée' dans la macro !

la ligne de code que vous signalez (ligne que vous avez modifié par rapport à la proposition) n'est là que pour effacer les données en colonne A avant de copier la liste mise à jour !!

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec