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

XL 2010 Trouver le mot qui manque dans une liste

  • Initiateur de la discussion Initiateur de la discussion anthonygg
  • Date de début Date de début

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 !

A

anthonygg

Guest
Bonjour,

J'ai crée un petit logiciel qui compare deux listes de prénoms. Je clique sur le bouton ''Trouve le nom manquant'', puis je selectionne la première liste puis la seconde, ensuite le logiciel trouve le nom manquant.

Ce que j'aimerai faire c'est simplifier la saisie pour ne pas avoir a tout selectionner et à scroller, par exemple juste cliquer sur la date et que cela selectionne automatiquement la liste de prénoms qui est en dessous.

Par exemple si je saisie la date en A2 que ça me selectionne de A5:A6000. Et si je selectionne B2 que ça me selectionne B5:B6000

Merci, je pense que c'est facile mais pas pour moi
 

Pièces jointes

Bonsoir Anthony, bonsoir le forum,

Une remarque. Ton code devrait plutôt se trouver dans un module standard...
Je l'ai modifié pour que l'utilisateur n'ait plus qu'à cliquer sur n'importe quelle cellule de la colonne pour la définir. Tu adapteras le message...
Le code :

VB:
Sub plager()
Dim O As Worksheet
Dim reponseA As Variant
Dim COL As Byte
Dim reponseB As Variant
Dim PlageA As Range, PlageB As Range, c As Range, Ligne As Long

Set O = Sheets("BDD")
O.Activate
O.Range("I1").CurrentRegion.Offset(0, 1).ClearContents
On Error Resume Next
Set reponseA = Application.InputBox(Prompt:="Veuillez sélectionner n'importe quelle cellule de la première colonne.", Type:=8)
If reponseA Is Nothing Then Exit Sub
COL = reponseA.Column
Set PlageA = O.Range(O.Cells(5, COL), O.Cells(Application.Rows.Count, COL).End(xlUp))
Set reponseB = Application.InputBox(Prompt:="Veuillez sélectionner n'importe quelle cellule de la seconde colonne.", Type:=8)
If reponseB Is Nothing Then Exit Sub
COL = reponseB.Column
Set PlageB = O.Range(O.Cells(5, COL), O.Cells(Application.Rows.Count, COL).End(xlUp))
Ligne = 1
For Each c In PlageA
    If WorksheetFunction.CountIf(PlageB, c.Value) = 0 Then
    Range("J" & Ligne).Value = c.Value
    Ligne = Ligne + 1
    End If
Next c
Sheets("ListeCopierColler").Activate
End Sub
 
Bonjour anthonygg, Robert,

Sur une grande plage calculer CountIf (NB.SI) sur toutes les cellules prend trop de temps.

Avec des objets Dictionary c'est très rapide, voyez le fichier joint et ces macros :
Code:
Sub CreerListes()
With Feuil2.[A5:B6000] 'plage de 2 colonnes, à adapter
  .Formula = "=TEXT(RANDBETWEEN(1,1200),""P0000"")" 'ALEA.ENTRE.BORNES
  .Value = .Value 'supprime les formules
  Call Comparer(.Cells, Feuil2.[E5]) 'cellule de restitution à adapter
End With
End Sub

Sub Comparer(plage As Range, restit As Range)
Dim d1 As Object, d2 As Object, t, i&, a, manque(), m&, plus(), p&
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
d1.CompareMode = vbTextCompare 'la casse est ignorée
d2.CompareMode = vbTextCompare 'la casse est ignorée
'---listes sans doublons---
t = plage.Resize(, 2) 'matrice, plus rapide
For i = 1 To UBound(t): d1(t(i, 1)) = "": Next
For i = 1 To UBound(t): d2(t(i, 2)) = "": Next
'---manque---
If d1.Count Then
  a = d1.keys
  ReDim manque(1 To d1.Count, 1 To 1)
  For i = 0 To UBound(a)
    If Not d2.exists(a(i)) Then m = m + 1: manque(m, 1) = a(i)
  Next
End If
'---plus---
If d2.Count Then
  a = d2.keys
  ReDim plus(1 To d2.Count, 1 To 1)
  For i = 0 To UBound(a)
    If Not d1.exists(a(i)) Then p = p + 1: plus(p, 1) = a(i)
  Next
End If
'---restitution sur restit et tris---
Application.ScreenUpdating = False
restit.Resize(Rows.Count - restit.Row + 1, 2) = "" 'RAZ
If m Then restit.Resize(m) = manque: restit.Resize(m).Sort restit
If p Then restit(1, 2).Resize(p) = plus: restit(1, 2).Resize(p).Sort restit(1, 2)
Set restit = Cells.Find(restit, , xlValues, , xlByColumns) 'initialise la boîte de dialogue Rechercher
End Sub
A+
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…