Excel ne répond pas lors d'execution d'une macro

Résolu/Fermé
Mossaab - Modifié le 5 mars 2020 à 10:59
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020 - 9 mars 2020 à 11:12
Bonjour,

Aidez moi s'il vous plait

J'ai crée une macro sur un fichier Excel qui contient plus que 22000 ligne, la macro s’exécute en mode pas à pas et quand je réduit le nombre de lignes, sinon le fichier excel beug et ne réponds pas.

Pouvez vous m'aider s'il vous plait ?

Voici la Macro
Sub MAJ2()

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim L As Long

L = Range("A1").End(xlDown).Row + 1

For i = 2 To L
    For j = i + 1 To L + 1
    
        If Sheets("Feuil1").Cells(i, 1) = Sheets("Feuil1").Cells(j, 1) Then
            For k = 2 To 100
                If Sheets("Feuil1").Cells(i, k) <> Sheets("Feuil1").Cells(j, k) Then
                    Sheets("Feuil1").Cells(i, k) = Sheets("Feuil1").Cells(i, k) & "//" & Sheets("Feuil1").Cells(j, k)
                    Sheets("Feuil1").Cells(j, k) = ""
                End If
            Next
        End If
    
    Next

Next



Mercii

Configuration: Windows / Chrome 79.0.3945.117
A voir également:

9 réponses

yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
4 mars 2020 à 13:08
bonjour, je suggère d'ajouter une ligne
DoEvents

après la ligne
For i = 2 To L
0
Merci mais ça n'a pas marché
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474 > Mossaab
4 mars 2020 à 13:31
et en mettant
doevents
après la ligne
for j
?
0
Mossaab > yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
4 mars 2020 à 13:36
Non plus :'(
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474 > Mossaab
4 mars 2020 à 14:27
que se passe-t'il exactement? excel ne répond pas?
0
Mossaab > yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
Modifié le 4 mars 2020 à 14:31
AU début avant de mettre DoEvents, la phrase Excel ne répond pas s'affiche à coté du titre du fichier, maintenant sa beug sans rien afficher
0
Comment ça, trier les données ?
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
5 mars 2020 à 11:39
si tu commences par trier les données suivant les valeurs en colonne A, tu peux faire très rapidement le reste du travail.
0
Le problème c'est qu'on doit comparer toutes les lignes, donc on peut pas faire le trie
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
5 mars 2020 à 11:52
pourquoi le tri va-t'il empêcher de comparer? peux-tu donner un exemple?
0
Pouvez vous svp me donner un exemple de tri pour savoir dequoi vous parler exactement
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
5 mars 2020 à 12:23
peux-tu partager ton fichier, ou un fichier d'exemple?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
5 mars 2020 à 13:52
Je ne peux pas le partager ici non ?
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
5 mars 2020 à 15:03
pour partager ici un fichier, tu le publies sur internet (google drive, cjoint.com, ...) puis tu partages ici le lien vers le fichier.
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
5 mars 2020 à 15:23
le fichier n'est pas public.
0
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
6 mars 2020 à 09:15
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
6 mars 2020 à 11:40
ce que je suggère, c'est que tu sélectionnes toutes tes données, et puis que tu demandes à excel de les trier par ordre croissant de la première colonne.
ensuite, tu ne devras plus comparer toutes les lignes, il suffira de comparer chaque ligne aux lignes suivantes ayant la même valeur en colonne A.
0
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
6 mars 2020 à 12:33
Mais je compare dèja chaque ligne aux lignes suivantes, j = i+1 toujours
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474
6 mars 2020 à 13:21
tu compares à toutes les lignes suivantes, alors que, si tu tries, il suffit de comparer à quelques lignes, celles qui ont la même valeur en colonne A, et tu pourras arrêter dès que la valeur en colonne A change. cela ira beaucoup plus vite.
0
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020 > yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
6 mars 2020 à 13:33
Est ce que tu sais comment changer la couleur du texte d'une cellule (i,k) avec i et k sont les parametres de la macro ?
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474 > Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
6 mars 2020 à 15:52
par exemple ainsi:
Sheets("Feuil1").Cells(i, k).Font.Color = RGB(0, 255, 0)
0
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020 > yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024
6 mars 2020 à 16:01
Merci
J'ai réussi à faire ça
Un autre problème c'est que sur cette ligne

Sheets("Feuil1").Cells(i, k) = Sheets("Feuil1").Cells(i, k) & "//" & Sheets("Feuil1").Cells(j, k)

je veux que les données de Sheets("Feuil1").Cells(j, k) gardent leurs mise en forme (couleur rouge)
est ce que ceci est possible ?
0
yg_be Messages postés 22709 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 avril 2024 1 474 > Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
6 mars 2020 à 16:33
je pense que c'est possible, si tu calcules la position et la longueur des données ajoutées, ainsi (non testé):
position=len(Sheets("Feuil1").Cells(i, k))+3
longueur=len(Sheets("Feuil1").Cells(j, k))
Sheets("Feuil1").Cells(i, k) = Sheets("Feuil1").Cells(i, k) & "//" & Sheets("Feuil1").Cells(j, k)
Sheets("Feuil1").Cells(i, k).Characters(position, longueur).Font.Color = _
      Sheets("Feuil1").Cells(j, k).Font.Color
0
Mossaab95 Messages postés 9 Date d'inscription jeudi 5 mars 2020 Statut Membre Dernière intervention 9 mars 2020
6 mars 2020 à 13:25
ça a marché, merci beaucoup, c'est gentille
0