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

Macro comparaison de cellules

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 !

Hawkeye56

XLDnaute Junior
Bonsoir à tous 🙂

Je soumets ce problème à votre sagacité:

J'ai un fichier excel de 14 000 lignes environ qui est le résultat de l'extraction de l'historique d'un logiciel de gestion de stock peu performant. Pour faire simple cet historique ne renseigne pas les désignations de produits mais uniquement leur référence en colonne "A". J'ai donc inséré une colonne "B" destinée à recevoir les désignations. Je mets à jour cette extraction régulièrement, en ajoutant des lignes et en faisant un tri croissant sur les références.
J'ai imaginé le principe d'une macro qui comparerait le contenu de la cellule A2 avec celui de la cellule A1. et ceci pour les 14000 lignes du tableau. Ceci m'éviterait de chercher les cellules vides et de les remplir manuellement

Le principe serait le suivant:

Si B2 est vide et que A2 = A1 alors recopier B1 en B2

Etant bien incapable d'écrire ce code je m'en remets à votre savoir. 🙂

En vous en remerciant par avance
 
Re : Macro comparaison de cellules

Bonsoir Hawkeye, bonsoir le forum,

Je te propose la macro ci-dessous mais, vu le nombre de lignes, elle risque de ramer un peu si tu as beaucoup de cellules vides en colonne B :

Code:
Sub Macro1()
Dim r As Range 'déclare la variable r (Recherche)
Dim dl As Long 'déclare la variable dl(Dernière Ligne)
Dim p As Range 'déclare la variable p (Plage)
Dim pa As String 'déclare la variable pa (Première Adresse)
dl = Range("B65536").End(xlUp).Row 'définit la variable dl
Set p = Range("B1:B" & dl) 'définit la variable p
With p 'prend en compte la plage p
    Set r = .Find("", Cells(dl, 2)) 'définit la variable r (recherche cellule vide dans la plage p)
    If Not r Is Nothing Then 'condition 1 : s'il existe au moins une cellule vide sans la plage p
        pa = r.Address 'définit la variable pa (adresse de la première cellule vide rencontrée)
        Do 'exécute
            r.Select 'sélectionne la cellule vide
            'copie la cellule du dessus si les deux de la colonne A sont identiques
            If r.Offset(-1, -1).Value = r.Offset(0, -1) Then r.FillDown
            Set r = .FindNext(r) 'redéfinit la variable r (Recherche le suivant)
            If r Is Nothing Then Exit Sub 'si le suivant n'existe pas sort de la procédure
            'tourne en boucle tant qu'il existe des cellules vides dans la plage
            'dont l'adresse est différente de pa
        Loop While Not r Is Nothing And r.Address <> pa
    End If 'fin de la condition 1
End With 'fin de la prise en compte de la plage p
End Sub
 
Re : Macro comparaison de cellules

Bonjour Robert, 🙂

Merci de ton aide, je m'en vais tester ça ce soir.
Les ajouts représentent moins d'une centaine de lignes à chaque fois, ça ne devrait pas être trop violent.

Je te tiens au courant du résultat 🙂

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
4
Affichages
93
Réponses
7
Affichages
662
Réponses
5
Affichages
866
Réponses
3
Affichages
548
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…