avec l’objet “Dictionary”.

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 !

moteurV12

XLDnaute Occasionnel
Bonsoir à Toutes et Tous

Je souhaiterai remplacer le code suivant qui compare 2 colonnes lentement


Set rngA = Range(Cells(1, "BM"), Cells(Rows.Count, "BM").End(xlUp))
Set rngB = Range(Cells(1, "R"), Cells(Rows.Count, "R").End(xlUp))


For Each cell In rngA
titi = Range("AJ2").Value ' titi est un compteur
If Not IsError(Application.Match(cell.Value, rngB, 0)) Then
Cells(titi + 1, "F").Value = Cells(cell.Row, "BM").Value
End If
Next

Par un objet Dictionary plus rapide
 
Re : avec l’objet “Dictionary”.

Faite un modèle avec juste les feuilles concernées et quelques dizaines de lignes sans formule. Figez leurs valeurs.
Et aussi le code que vous avez essayé. Vraiment ce seul et unique CellsColLgnOù(…).ClearContents ne peut pas être lent.
Mais vous pouvez mettre avant Application.Calculation = xlCalculationManuel pour voir si ça va mieux.
Ça implique toujours le [A:E].Sort [a1], xlAscending, Header:=xlNo juste après et enfin Application.Calculation = xlCalculationAutomatic.

Si c'est lent, je suppose que c'est parce que vous avez essayé de l'exécuter dans une boucle, faute d'avoir compris qu'il faisait carrément toute la UsedRange d'un seul coup.
 
Dernière édition:
Re : avec l’objet “Dictionary”.

Voilà un fichier test

Effectivement là c'est rapide, dans mon fichier non hélas.
par contre les lignes vides "pas ok" restent, hors le but est de ne plus avoir de lignes vides mais sans supprimer de ligne lol.
 
Re : avec l’objet “Dictionary”.

Ça a l'air de marcher, non ?
En ajoutant le classement que vous avez fait, ça ne va pas ?
Notez que si vous voulez effacer tout jusqu'à DK il suffit de mettre:
VB:
CellsColLgnOù([A1:DK1], "DK", "=", "PAS OK").ClearContents
 
Re : avec l’objet “Dictionary”.

Hélas je ne peu effacer les autres cellules que de A à E pour les remplacer par les bonnes.
En fait faudrait travailler dans un tableau qui réinjecterait les valeurs "A:E" sans lignes vides.

Je fais des test avec différentes solutions... mais pour l'instant.....
 
Re : avec l’objet “Dictionary”.

Et le classement ?
Et pourquoi ne pouvez vous pas supprimer les "PAS OK" ?
Si les colonnes F😀J contiennent d'autres tableaux tout à fait étrangers à A:E vous pourriez ne le faire que sur les colonnes A:E. Il me semble que ça aurait le même résultat, non ?
 
Dernière édition:
Re : avec l’objet “Dictionary”.

Oui tes fonctions sont bonnes, mais ne représentent pas la solution globale que je cherche à cause des lignes vides.
Pas grave, je continuerai après le dodo.

Je te remercie de ton aide et te souhaite une bonne nuit.
A++
 
- 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
5
Affichages
839
Réponses
4
Affichages
692
Réponses
15
Affichages
656
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour