Doublons dans une matrice dédoublée
Bonjour,
J'ai une matrice qui compare chacun de mes individus entre eux sur une même ligne, donc compare #1 avec #2, #2 avec #3, mais aussi #2 avec #1, #2 avec #3 et etc.. C'est difficile à expliquer, mais j'ai mis un exemple clair en pièce jointe. Ainsi, mes valeurs sont dédoublées et je veux sélectionner seulement une partie de cette matrice, la moitié en fait (correspondant à mes comparaisons, mais pas dédoublées). J'ai essayé "Détecter les doublons", mais Excel n'en détecte pas, alors que les valeurs reviennent pourtant bel et bien 2 fois puisque les comparaisons se font 2 fois (Lala 15 avec 16, puis Lala 16 avec 15). Savez-vous comment je pourrais sélectionner seulement la première moitié des données?
Merci,
Calipsooo
Bonsoir,
Vous trouverez une proposition, en espérant qu'elle conviendra.
Warning : il ne faut rien saisir en colonne a en dessous des tableaux.
Cdt et bonne soirée
Air_2
Merci! Wow, je suppose que c'est une macro, que malheureusement je ne sais pas du tout comment utiliser!
Puis-je copier un autre tableau plus gros à la place de celui-ci, et cela fonctionnera quand même?
Calipsooo
Bonsoir,
Le savoir est une chose qu'on aime partager comme le bon pain.
Vous trouverez ci-après le code avec les explications les plus importantes :
Public Lignefin, Colonnefin As Variant 'je déclare les variables
Public LigneDebut, Lignefin2 As Variant 'je déclare les variables
Sub Constituer_BaseRef()
'je lui demande de trouver le numéro de la derniere ligne non vide en commencant par la cellule A6
Lignefin = Feuil1.Range("a6").End(xlDown).Row
'je lui demande de trouver le numéro de la derniere Colonne non vide en commencant par la cellule IV5
Colonnefin = Feuil1.Range("IV5").End(xlToLeft).Column
'je commence ma boucle à la ligne 6 jusqu'à la derniere lige trouvée ci-dessus
For a = 6 To Lignefin
'je commence à la première colonne jusqu'à la derniere colonne renseignée
For b = 1 To Colonnefin
If Feuil1.Cells(a, b) = "" Or Feuil1.Cells(a, b) = " " Then 'si la première cellule visitée est vide
GoTo step1 ' alors je vais en step1 en bas
Else
Feuil1.Cells(a + Lignefin + 2, b) = Feuil1.Cells(a, b) 'si la cellule n'est pas viide j'envoie la valeur de la cellule : à la ligne visitée + (la valeur de la dernierne ligne) + 2
End If
Next
step1: 'donc ici la suite logique je vais à la ligne suivante
Next
End Sub
Sub effacer()
LigneDebut = Feuil1.Range("A65536").End(xlUp).End(xlUp).Row 'je recherche la premiere ligne renseignée en partant de la dernière ligne de la feuille (j'ai donc 2 fois .end(xlup))
Lignefin2 = Feuil1.Range("A65536").End(xlUp).Row
Feuil1.Range(Feuil1.Rows(LigneDebut), Feuil1.Rows(Lignefin2)).ClearContents
End Sub
En espérant avoir été clair.
Cdt et bonne fin de soirée
Air_2