Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Comparer deux listes pour répertorier les nouveau

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 !

Webperegrino

XLDnaute Accro
Supporter XLD
Bonjour le Forum,

Les lignes VBA liées au bouton vert « MAJ « NOUVEAU » du fichier ci-joint ne me produisent pas ce que je désire : répertorier les NOUVEAUX en colonne F.

Il s’agit de comparer la colonne AX avec chaque personne figurant en colonnes B & C.

Mes lignes ne devraient détecter que F7 et F11 en « NOUVEAU ».

Merci de m’indiquer mon erreur de codification.

Webperegrino
 

Pièces jointes

Solution
Bonjour,

Je ne vois pas à quoi sert le With dans la macro. 🙁

Quand tu utilises Cells.SpecialCells(xlCellTypeConstants) tu utilises toutes les cellules de la feuille qui contiennent une constante, et ce n'est probablement pas ce que tu veux faire.

Il faudrait peut-être réécrire complètement la macro.
Sinon, tu peux utiliser une formule du genre =SI(NB.SI(AX$5:AX$97;B5&" "&C5);"";"Nouveau").
Bonjour,

Je ne vois pas à quoi sert le With dans la macro. 🙁

Quand tu utilises Cells.SpecialCells(xlCellTypeConstants) tu utilises toutes les cellules de la feuille qui contiennent une constante, et ce n'est probablement pas ce que tu veux faire.

Il faudrait peut-être réécrire complètement la macro.
Sinon, tu peux utiliser une formule du genre =SI(NB.SI(AX$5:AX$97;B5&" "&C5);"";"Nouveau").
 
Bonsoir Webperegrino,TooFatBoy,
Un essai en PJ avec :
VB:
Private Sub CommandButton1_Click()
    Dim Ancien, L%, i%, Prenom$, Nom$, Present%
    Application.ScreenUpdating = False
    Ancien = Range("AY5:AZ" & Cells(Rows.Count, "AY").End(xlUp).Row)
    For L = 5 To Cells(Rows.Count, "B").End(xlUp).Row
        Prenom = Cells(L, "B"): Nom = Cells(L, "C"): Present = 0
        For i = 1 To UBound(Ancien)
            If Ancien(i, 1) = Prenom And Ancien(i, 2) = Nom Then: Present = 1: Exit For
        Next i
        If Present = 0 Then Cells(L, "F") = "NOUVEAU" Else Cells(L, "F") = ""
    Next L
End Sub
 

Pièces jointes

Le Forum,
Bonsoir TooFatBoy,
"Mais c'est bien sûr !", cette formule est aussi efficace que du VBA.
Je l'ai adoptée dans mon fichier source et cela produit exactement l'effet désiré.
Mais, pour entretenir mes neurones, je vais laisser tomber la codification par "Cells.SpecialCells(xlCellTypeConstants)" quand bien même je croyais spécifier, dans mes lignes vba, la plage à travailler : With Range(Cells(5, 50), Cells(derlg, 50))
Je vais revoir cette macro en produisant une série de boucles "For ... Next" sur les colonnes B-C en comparaison de la colonne AX, peut-être arriverai-je à la corriger.
Merci TooFatBoy pour cette formule, ça me convient déjà.
Cordialement,
Webperegrino
 
Le Forum, TooFatBoy,
Bonsoir Sylvanu,
Même pas le temps de finaliser mon message #4 que vous me répondez en #3, avec la solution VBA de surcroît !
... et qui fonctionne aussi bien que la formulation de cellules en colonne "F" de TootFatBoy.
Me voilà maintenant à devoir choisir en deux solutions ! Merci.
Si les cellules de la colonne F contiennent la formule de TooFatBoy, je constate que c'est TooFatBoy qui gagne en rapidité d'exécution par rapport à la programmation rectificative en VBA.
Sylvanu, ne soyez pas contrit si je marque en vert la réponse #2 de TooFatBoy : votre solution est aussi excellente.
Ça devrait être vous qui devriez être marqué en vert car répondant avec du VBA corrigé.
Mais comme l'exécution est plus rapide selon ce que propose TooFatBoy... vraiment désolé Sylvanu, car vos deux solution donnent, également, "une meilleure transparence".
Pour moi vous êtes tous les deux sur la même marche du Podium !
Merci
Webperegrino
 
C'est parfait aussi pour cette formule dans mon fichier car je ne prospecterai que sur 110 à 130 lignes de noms de bénévoles.

La formule =SI(NB.SI(AX$5:AX$97;B5&" "&C5);"";"Nouveau")
est devenue dans mon application, en colonne F,
=si(C5="";"";SI(NB.SI(AX$5:AX$130;B5&" "&C5);"";"Nouveau"))

Ainsi, les lignes vides de la colonne F et en partie basse du pavé, ne contiendront pas "Nouveau", si j'ai moins de 130 bénévoles à saisir.
Merci TooFatBoy,
Webperegrino
 
- 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

G
  • Question Question
Réponses
4
Affichages
895
D
Réponses
2
Affichages
2 K
D
R
Réponses
2
Affichages
942
raskok
R
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…