VBA : Comparaison de cellules.

  • Initiateur de la discussion Initiateur de la discussion bric129
  • Date de début Date de début

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 !

B

bric129

Guest
Bonjour,

Après de longues heures de recherches, je me permets de vous demander votre aide.

Je travaille sur un fichier Excel de plusieurs dizaines de milliers de lignes et je dois y comparer des dates pour renvoyer la plus récente à une cellule précise.

Explication :

Sur une même colonne, j’ai plusieurs types de donnée créant une arborescence (type 1 et type 2). Les types 2 sont liés aux types 1 qui sont au dessus :

Type1 Date1
Type 2 Date |
Type 2 Date | La plus récente des 3 est envoyé à Date1
Type 2 Date |
Type1 Date1
Type 2 Date |
Type 2 Date |
Type 2 Date | La plus récente des 5 est envoyé à Date1
Type 2 Date |
Type 2 Date |


Chaque Type 2 contient une date et je souhaite comparer ces dates pour que la plus récente soit envoyée à Type 1.

J’y arrive très bien en créant 2 boucles mais cela est bien trop lourd pour mon fichier et le calcul est interminable.

Je cherche donc une autre méthode avec une fonction que je ne connaitrais pas…

Merci d’avance pour votre aide.

Brice
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA : Comparaison de cellules.

Re 🙂,
On peut retrouver plusieurs fois la même zone...
Du coup à moins que je me trompe, cela ne peut pas marcher.
😕...
Si tu a plusieurs fois la même date, je ne vois pas ce que ça peut poser comme problème à partir du moment où tu récupères le Max 🙄...
Ton fichier en retour 😎
 

Pièces jointes

Re : VBA : Comparaison de cellules.

Je précise que les dates sont liées au Type 1 du dessus.
Il faut donc comparer les dates d'un Type 1 jusqu'au prochain Type 1, quelque soit la zone.
Donc ta formule posera problème.
Merci quand même 🙂
 
Re : VBA : Comparaison de cellules.

Re 🙂,
Hum... L'énoncé était clair comme de l'eau de roche 🙄...
A tester :
Code:
Sub test()
Dim Cel1 As Range, Cel2 As Range, FirstAddress As String
Application.ScreenUpdating = False
With Worksheets("Feuil1").Range("A:A")
    Set Cel1 = .Find("S01", LookAt:=xlWhole, LookIn:=xlValues)
    If Not Cel1 Is Nothing Then
        Set Cel2 = Cel1
        FirstAddress = Cel1.Address
        Do
            Set Cel1 = .FindNext(Cel1)
            Cel2.Offset(0, 2) = Application.WorksheetFunction.Max(Range("C" & Cel2.Row + 1 & ":C" & Cel1.Row - 1))
            Set Cel2 = Cel1
        Loop While Not Cel1 Is Nothing And Cel1.Address <> FirstAddress
    End If
End With
Application.ScreenUpdating = True
End Sub
Bonne suite 😎
 
Re : VBA : Comparaison de cellules.

Re 🙂,
Salut Pierre-Jean 🙂,
Ta macro m'a permis de m'apercevoir que j'avais une erreur sur le dernier bloc (logique vu qu'il utilisait de nouveau le premier S01 trouvé, soit quasi toute la colonne 😱...).
Une version corrigée
Code:
Dim Cel1 As Range, Cel2 As Range, FirstAddress As String
Application.ScreenUpdating = False
With Worksheets("Feuil1").Range("A:A")
    Set Cel1 = .Find("S01", LookAt:=xlWhole, LookIn:=xlValues)
    If Not Cel1 Is Nothing Then
        Set Cel2 = Cel1
        FirstAddress = Cel1.Address
        Do
            Set Cel2 = Cel1
            Set Cel1 = .FindNext(Cel1)
            Cel2.Offset(0, 2) = Application.WorksheetFunction.Max(Range("C" & Cel2.Row + 1 & ":C" & Cel1.Row - 1))
        Loop While Not Cel1 Is Nothing And Cel1.Address <> FirstAddress
    End If
    Set Cel1 = .Find("", LookAt:=xlWhole, LookIn:=xlValues)
    Cel2.Offset(0, 2) = Application.WorksheetFunction.Max(Range("C" & Cel2.Row + 1 & ":C" & Cel1.Row - 1))
End With
Application.ScreenUpdating = True
Je serais curieux de savoir laquelle est la plus rapide sur plusieurs dizaines de milliers de lignes 🙄...
Bonne suite 😎
 
Re : VBA : Comparaison de cellules.

Re

Jean Noel
Ta macro est certainement la plus rapide (2 fois plus sur environ 1000 lignes)
Pour ma part je ne suis pas tout a fait sur de moi : je suis parti sur la colonne B en supposant un changement au niveau du type (colonne 1)
As-tu de ton côté la certitude que le type est invariablement S01
Ah ! ces énoncés pleins de non-dits
 
Re : VBA : Comparaison de cellules.

Re 🙂,
Pour ma part je ne suis pas tout a fait sur de moi : je suis parti sur la colonne B en supposant un changement au niveau du type (colonne 1)
As-tu de ton côté la certitude que le type est invariablement S01
Ah ! ces énoncés pleins de non-dits
Et oui, c'est bien là le problème 🙄...
On va attendre le retour de Bric-à-brac 😛...
Bonne soirée 😎
 
Re : VBA : Comparaison de cellules.

Merci beaucoup pour les réponses ! La proposition de Jean Noël marche très bien du coup !
Vous m'enlevez une bonne épine du pied 🙂
Pour répondre à Pierre Jean, le type est invariablement S01.
Encore merci et désolé si il y avait des non dits dans mon énoncé... C'est pas toujours évident d'expliquer ce que l'on souhaite et on passe souvent à côté de choses qui nous semple évident ^^
Merci !
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour