Tester la présence de plusieurs valeurs dans une colonne

yannon Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je m'explique :
J'ai une tableau qui contient plusieurs enregistrements. Dans ce tableau il y a une colonne contenant des références "AAK", "LAK" etc. Je dois vérifier que chaque référence contenue dans cette colonne est également présente au moins une fois dans la colonne d'une autre feuille (dans le même classeur).

Pour l'instant j'ai réussi à fair el tri nécessaire dans mon tableau et à sélectionner la colonne concernée, mais je n'arrive pas à continuer, c'est-à-dire que je bloque au moment où il faudrait récupérer toutes les références de la colonne.

Si quelqu'un a une solution je le remercie :)
A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Yannon, bonjour le forum,

Code ci-dessous à adapter à ton cas (faut dire que tu as été tellement précis...) :

Sub Macro1()
Dim S As Worksheet 'déclare la variabe S (ongle Source)
Dim DLS As Integer 'déclare la variabe DLS (Dernière Ligne édité de l'onglet Source)
Dim TCS As Variant 'déclare la variabe TCS (Tableau de Cellules de l'onglet Source)
Dim D As Worksheet 'déclare la variabe D (ongle Destination)
Dim DLD As Integer 'déclare la variabe DLD (Dernière Ligne édité de l'onglet Destination)
Dim PLD As Range 'déclare la variabe PLD (PLage de l'onglet Destination)
Dim K As Integer 'déclare la variabe K (incrément)
Dim I As Integer 'déclare la variabe I (Incrément)
Dim R As Range 'déclare la variabe R (Recherche)
Dim TL() As Variant 'déclare la variabe TL (Tableau de Lignes)

Set S = Sheets("Feuil1") 'définit l'onglet S (à adapter)
DLS = S.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DLS de la colonne 1 (=A à adapter) de l'onglet S
TCS = S.Range("A1:A" & DLS) 'définit le tableau de cellules TCS de l'onglet S (à adapter)
Set D = Sheets("Feuil2") 'définit l'onglet D (à adapter)
DLD = S.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DLS de la colonne 1 (=A à adapter) de l'onglet D
Set PLD = D.Range("A1:A" & DLS) 'définit la palge PLD (à adapter)
K = 1 'initialise la variable K
For I = 1 To UBound(TCS, 1) 'boucle sur toutes les lignes I du tableau de cellules TCS
    'définit la recherche R (recherche la valeur entière ligne I, colonne 1 de TCS dans la plage PLD)
    Set R = PLD.Find(TCS(I, 1), , xlValues, xlWhole)
    If R Is Nothing Then 'condition : si aucune occurrence n'est trouvée
        ReDim Preserve TL(1 To K) 'redimensionne le tableau TL
        TL(K) = TCS(I, 1) 'ajoute la valeur de TCS(I,1) au tableau TL
        K = K + 1 'incrément K
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
'si au moins un élément a été trouvé renvoie dans A1 (à adapter) de l'onglet S la liste des éléments manquants
If K > 1 Then S.Range("E1").Resize(UBound(TL, 1), 1).Value = Application.Transpose(TL)
End Sub

0