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

comparaison de deux tableaux

  • Initiateur de la discussion Initiateur de la discussion osishame
  • 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 !

osishame

XLDnaute Junior
Bonjour le forum !

L'objectif de ma macro est de comparer deux tableaux (celui de l'onglet F1 et de l'onglet F2) et de sortir les lignes manquantes du tableaux F1 dans l'onglet Sorties.

La comparaison s'effectue sur le "code" (colonne 1) et en cas de "code" manquant, sur le "nom" sans tenir compte des majuscules et des accents (colonne 2).

Pour l'instant, j'arrive à comparer les tableaux sur le code quand il y en a un mais pas en cas de "code" vide... De plus je ne sais pas comment gérer la non prise en compte de la casse et les accents é, è, ë, î, ect...

Merci beaucoup pour votre aide !

bonne soirée.

osi.
 

Pièces jointes

Re : comparaison de deux tableaux

Bonsoir,

Pour comparer x et y

If Ucase(SansAccent(x))=Ucase(SansAccent(y)) Then

Code:
Function sansAccent(chaine)
   codeA = "ÉÈÊËÔéèêëàçùôûïî"
   codeB = "EEEEOeeeeacuouii"
   temp = chaine
   For i = 1 To Len(temp)
    p = InStr(codeA, Mid(temp, i, 1))
    If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
   Next
   sansAccent = temp
End Function

JB
 
Re : comparaison de deux tableaux

Merci JB,
Comment puis-je l'intégrer mon code ?



 
Re : comparaison de deux tableaux

Merci beaucoup 🙂, c'est bien cela, il ne reste plus que la prise en compte de la casse et des accents... Challenging...

Je souhaite donc bien comparer les 2 premières colonnes ("code") de mes tableaux TB1 et TB2 et en cas de données vide dans la colonne 2, la comparaison s'effectue sur les 2 deuxième colonnes ("noms") de mes tableaux TB1 et TB2 et là sans tenir compte de la casse et des accents.

J'ai remis à jour la table résultat souhaité qui était fausse (my mistake, désolé).
 

Pièces jointes

Re : comparaison de deux tableaux

Bonjour,

Cf PJ

Dans la seconde version, les doublons sont éliminés.

Code:
Option Compare Text
Sub F1_nonF2()
  Application.ScreenUpdating = False
  Set f1 = Sheets("F1")
  Set f2 = Sheets("F2")
  'on définit a et b comme étant les 2 tableaux BD1 et BD2'
  a = f2.Range("A1").CurrentRegion.Value
  b = f1.Range("A1").CurrentRegion.Value
  Set mondico1 = CreateObject("Scripting.Dictionary")
  Set mondico2 = CreateObject("Scripting.Dictionary")
  'On crée un dictionnaire de données sur la ligne i et la colonne 1'
  For i = 2 To UBound(a): mondico1(sansAccent(a(i, 2))) = "": Next i
   ligne = 1
    Dim c
    ReDim c(1 To Application.Max(UBound(a), UBound(b)), 1 To UBound(a, 2))
    For i = 2 To UBound(b)
      If Not mondico1.Exists(sansAccent(b(i, 2))) And Not mondico2.Exists(sansAccent(b(i, 2))) Then
        mondico2(sansAccent(b(i, 2))) = ""
        For K = 1 To UBound(b, 2): c(ligne, K) = b(i, K): Next K
        ligne = ligne + 1
      End If
    Next
    Sheets("Sorties").[A2].Resize(UBound(a, 1), UBound(a, 2)) = c
End Sub

Function sansAccent(chaine)
   codeA = "ÉÈÊËÔéèêëàçùôûïî"
   codeB = "EEEEOeeeeacuouii"
   temp = chaine
   For i = 1 To Len(temp)
    p = InStr(codeA, Mid(temp, i, 1))
    If p > 0 Then Mid(temp, i, 1) = Mid(codeB, p, 1)
   Next
   sansAccent = temp
End Function

JB
 

Pièces jointes

Dernière édition:
- 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

D
  • Question Question
Réponses
5
Affichages
79
Didierpasdoué
D
Réponses
1
Affichages
2 K
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…