Aide! Macro rechercher valeurs similaires dans chaque colonne d'un tableau et suppr

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 !

charbo57

XLDnaute Nouveau
Bonjour à tous,

étant novice sur Excel, je me retrouve confronté à un problème de poids lors de l'élaboration d'une macro sur ce logiciel. J'espère que vous pourrez m'aider.

Je possède quatre feuilles contenant chacune 1 tableau de 80 colonnes et de 600 lignes. Je souhaiterai chercher dans les colonnes de ce tableau les valeurs qui se répètent trop souvent pour les supprimer.

En langage informatique, cela donnerait quelque chose du genre :

"pour la feuille active"

%initialisation
colonne_debut = 1
colonne_fin = 80
ligne_debut = 3
ligne_fin = 630

% pour chaque colonne, je balaye :
for i = colonne_debut to colonne_fin
limite = 0;
% pour chaque ligne, je regarde si la valeur de la cellule concernée se répète
for j = ligne_debut to ligne_fin
%pour chaque cellule concernée, je balaye les autres cellules de la colonne
for k = ligne_debut to ligne_fin
if valeurcellule(i,j) = valeurcellule(i,k)
limite = limite + 1;
% si + de 8 valeurs similaires, on les supprime
if limite >= 8
delcellule(i,*) = 'valeurcellule(i,j)' % action de supprimer (avec Selection.ClearContents? 😕 )
end
end
end
end
end

j'espère que vous m'avez suivi ^^, malheureusement, je ne connais pas très bien les équivalences pour le VBA et je n'arrive pas du tout à l'enregistrer de manière manuelle.

Merci pour votre aide et bonne fin de week-end
 
Re : Aide! Macro rechercher valeurs similaires dans chaque colonne d'un tableau et su

Bonjour charbo57

Et bienvenue sur XLD

Compte tenu du grand nombre de données je pense qu'il faut travailler avec dictionnaire et Tableau

A tester:

Code:
Sub suppr()
tablo = Range("A1:CB600") 'a adapter
For m = LBound(tablo, 2) To UBound(tablo, 2)
Set dico = CreateObject("Scripting.dictionary")
  For n = LBound(tablo, 1) To UBound(tablo, 1)
    x = tablo(n, m)
    If x <> "" Then dico(x) = dico(x) & n & ":" & m & ";"
  Next
  a = dico.keys
  b = dico.items
  For p = LBound(a) To UBound(a)
    Z = Split(b(p), ";")
    If UBound(Z) > 7 Then
      For q = LBound(Z) To UBound(Z) - 1
        zz = Split(Z(q), ":")
        tablo(zz(0), zz(1)) = ""
      Next
    End If
  Next
Next
Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo 'A1 à adapter
End Sub
 
Re : Aide! Macro rechercher valeurs similaires dans chaque colonne d'un tableau et su

Re

La nuit portant conseil: Une version simplifiée

Code:
Sub suppr()
tablo = Range("A1:CB600") 'a adapter
For m = LBound(tablo, 2) To UBound(tablo, 2)
Set dico = CreateObject("Scripting.dictionary")
  For n = LBound(tablo, 1) To UBound(tablo, 1)
    x = tablo(n, m)
    If x <> "" Then dico(x) = dico(x) & n & ";"
  Next
  a = dico.keys
  b = dico.items
  For p = LBound(a) To UBound(a)
    Z = Split(b(p), ";")
    If UBound(Z) > 7 Then
      For q = LBound(Z) To UBound(Z) - 1
        tablo(Z(q), m) = ""
      Next
    End If
  Next
Next
Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo 'A1 à adapter
End Sub
 
- 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
8
Affichages
244
Réponses
4
Affichages
462
Réponses
5
Affichages
604
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
761
Réponses
3
Affichages
719
Retour