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

XL 2016 Doublons inversés

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

NCY74

XLDnaute Nouveau
Bonjour à tous,

J'ai une colonne A qui contient de valeur A, B, C, D, E, F, G, H..... et une deuxième colonne qui contient une lettre associé à la valeur sur la même ligne de la colonne A. Ainsi en A1 j'ai par exemple la lettre E et dans B1 la lettre J. Cela veut dire que la lettre E va avec la lettre J.
Plus bas, j'ai en A45 (par exemple) la lettre J et en B45 la lettre E. Cela veut dire que la lettre J va avec la lettre E. Mais finalement c'est la même chose. Je voudrais donc trouver une commande qui me permette de supprimer ces doublons et de ne garder que un sens, c'est à dire E J et pas J E.

Pouvez-vous m'aider ?

Merci d'avance !
 
Bonjour
Essaye de t'exprimer avec autre chose que des "Va avec", qui ne veut rien dire.
Qu'essayes-tu de dire ?
Serait-ce par exemple : recenser/éliminer les doublons de combinaisons sans arrangement ?
Fais s'il te plait cet effort essentiel de clarté et précision, qui sont des conditions sine qua non d'un développement sain.
 
Bonjour,

merci pour votre réponse.
Je veux dire « associer ».
en effet c’est votre belle phrase qui est juste : « éliminer les doublons de combinaisons sans arrangement ». Excusez moi de ne pas avoir utilisé les bons termes (que je ne connaissais pas).
Merci pour votre aide.
 
Bonjour,
Tu veux dire que tu utilise un code ,qui doit être univoque, sur deux caractère invariablement écrit par exemple AJ ou JA, sachant que dans le premier exemple A ce trouve dans la colonne [A] et J en [ B] et inversement J en [A] et A en [ B] pour le deuxième exemple ?
 
Dernière édition:
re
La solution que j'ai à proposer est d'une plus ou moins grande simplicité selon le type des données dans les deux colonnes concernées.
Quel est ce type ? -->>
- que des données numériques ? -->> OUI/NON
ou
- des données alphanumériques ? -->> OUI/NON
 
Il s’agit seulement de lettres. Pour être exact ce sont des codes d'aéroports. Exemple : ligne CDG-TLS. La colonne A contient alors CDG et la B TLS. Mais il est possible de trouver plus bas une ligne TLS-CDG (que je souhaite alors supprimer).
Merci pour votre aide !
 
Bonjour.
VB:
Option Explicit
Sub VersusSansDoublon()
  Dim ASUR As Range, TDon(), L As Long, C As Long, N As Long, TK(), _
      D As New Dictionary, TVsExiste() As Boolean, J As Long, A As Long, TRés()
   Set ASUR = ActiveSheet.UsedRange ' À adapter
   TDon = ASUR.Value
   ReDim TK(1 To UBound(TDon, 1) * 2)
   For L = 1 To UBound(TDon, 1)
      For C = 1 To 2
         If Not D.Exists(TDon(L, C)) Then
            N = N + 1
            TK(N) = TDon(L, C)
            D(TK(N)) = N: End If
         Next C, L
   ReDim TRés(1 To UBound(TDon, 1), 1 To UBound(TDon, 2)), _
      TVsExiste(0 To VersusJA(N - 1, N))
   For L = 1 To UBound(TDon, 1)
      J = D(TDon(L, 1)): A = D(TDon(L, 2))
      If J <> A Then TVsExiste(VersusJA(J, A)) = True
      Next L
   L = 0
   For N = 0 To UBound(TVsExiste)
      If TVsExiste(N) Then
         L = L + 1
         CalcJAVersus J, A, N
         TRés(L, 1) = TK(J)
         TRés(L, 2) = TK(A)
         End If
      Next N
   ASUR.Value = TRés
   End Sub
Public Function VersusJA(ByVal J As Long, ByVal A As Long) As Long
   If A < J Then A = A Xor J: J = J Xor A: A = A Xor J
   If A > J Then VersusJA = A * (A - 3) \ 2 + J Else VersusJA = -1
   If VersusJA < 0 Then Err.Raise 9999, , "VersusJA(" & J & ", " & A & ") impossible."
   End Function
Private Sub CalcJAVersus(ByRef J As Long, ByRef A As Long, ByVal VS As Long)
   A = Int(Sqr(2 * VS + 0.25) + 1.5)
   J = VS - A * (A - 3) \ 2
   End Sub
Activez la référence Microsoft Scripting Runtime
 
Donc des données non numériques.
Voici une méthode simple, sans boucle, qui ne nécessite aucun code VBA si One Shot, mais dont l'utilisation de l'enregistreur de macro pourra "servir" le code VBA si opération non "one shot"
- insertion d'une colonne C après la colonne B
- formule en C1, à tirer ensuite vers le bas autant que nécessaire :
VB:
=SI(A1<B1;A1&"$"&B1;B1&"$"&A1)
- menu --->> supprimer les doublons sur la base de la colonne C
- suppression de la colonne C

Yapluka
 
- 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

Réponses
9
Affichages
397
  • Question Question
Microsoft 365 Traitement
Réponses
7
Affichages
135
Réponses
3
Affichages
205
Réponses
13
Affichages
241
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…