Microsoft 365 regroupement selon condition

FCMLE44

XLDnaute Impliqué
Bonjour

Dans le fichier joint, je souhaiterais que pour chaque ligne ayant le même matricule en feuille base, regrouper en feuille nommée "Regroupement" les dates de début et de fin qui se suivent (exemple feuille Résultats à obtenir)

J'ai essayé de reprendre une macro ancienne et je l'ai adapté mais j'ai un débogage qui apparait (cf capture) et je ne comprends pas

Voici le code écrit

VB:
Option Explicit

' Touche de raccourci du clavier: Ctrl+Shift+P
Public Sub regroupe()
Dim der As Long     ' ligne fin Regroupement
Dim lgo As Long     ' ligne origine
Dim lgr As Long     ' ligne Regroupement
Dim wo As Worksheet ' feuille Base
Dim wr As Worksheet ' feuille Regroupement
    Set wo = ThisWorkbook.Sheets("Base")
    Set wr = ThisWorkbook.Sheets("Regroupement")
    lgr = 2
    der = wr.Cells(Rows.Count, 1).End(xlUp).Row
'    wr.Cells(2, 1).Resize(der, 6).Select
    wr.Cells(2, 1).Resize(der, 6).ClearContents
    wr.Cells(2, 1).Resize(1, 6).Value = wo.Cells(2, 1).Resize(1, 6).Value
    For lgo = 1 To wo.Cells(Rows.Count, 1).End(xlUp).Row
        If wo.Cells(lgo, "A").Value = wr.Cells(lgr, "A").Value _
            And wo.Cells(lgo, "C").Value = wr.Cells(lgr, "D").Value + 1 Then
                wr.Cells(lgr, "D").Value = wo.Cells(lgo, "D").Value
                wr.Cells(lgr, "F").Value = wr.Cells(lgr, "F").Value + wo.Cells(lgo, "F").Value
        Else
                lgr = lgr + 1
                wr.Cells(lgr, 1).Resize(1, 6).Value = wo.Cells(lgo, 1).Resize(1, 6).Value
        End If
    Next lgo
    MsgBox lgr - 1 & " lignes résultat"
    wr.Activate
    Columns("A:F").AutoFit
End Sub
 

Pièces jointes

  • Capture débogage.png
    Capture débogage.png
    40.1 KB · Affichages: 7
  • Test Regroupement.xlsm
    22.4 KB · Affichages: 7
Solution
Bonjour.
L'erreur vient de ce que vous commencez lgo à 1 qui est la ligne de titres et où les colonnes C à F ne sont pas numériques. Avec For lgo = 2 to wo.Cells(Rows.Count, 1).End(xlUp).Row ça se passe un peu mieux …

Dranreb

XLDnaute Barbatruc
Bonjour.
L'erreur vient de ce que vous commencez lgo à 1 qui est la ligne de titres et où les colonnes C à F ne sont pas numériques. Avec For lgo = 2 to wo.Cells(Rows.Count, 1).End(xlUp).Row ça se passe un peu mieux …
 

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh