Sub test() Dim strFSynt As String strFSynt = "synthese" ' nom de la feuille de synthese '-------------------------------- 'Boucle sur les feuilles du classeur '-------------------------------- For Each sh In ThisWorkbook.Sheets 'on exclut la feuille synthese If sh.Name <> strFSynt Then Debug.Print "Feuille : " & sh.Name & " --> nbLignes = " & lastRow(sh.Name) '-------------------------------- 'ici les actions de copier/coller '-------------------------------- DernLigneSynthese = lastRow(strFSynt) Debug.Print "Feuille Synthèse : dernière ligne = " & DernLigneSynthese '... '... End If Next End Sub Function lastRow(sheetname As String) As Integer lastRow = Sheets(sheetname).Range("A" & Rows.Count).End(xlUp).Row End Function
J'ai posé trois questions sur le forum et seul UCFOUTU est capable de me faire des réponses m'expliquant que ce que je fais est inutile ou que je m'explique malEn général c'est parce qu'il a été le premier à te répondre..sinon ça aurait tout aussi bien pu être moi qui me serais permis de te faire des remarques sur la rédaction de tes questions.
J'ai déjà fait tout ce que tu décris, la recopie (soit par code soit à la main pour tester)N'aurais-tu pas pu nous le dire dès le départ ??? ça m'aurait éviter de perdre du temps à te proposer ce code...
je serai plus vigilant lors de la rédaction de mes questions même si je ne comprends pas ce que l'on peut reprocher sur la formeTes questions manquent de détail.
Concernant ucfoutu, tu as dû remarquer que je n'ai pas le même ton à ton égard. Ce n'est pas un hasard.En fait.. je le comprend... ce n'est pas forcément contre toi.. c'est juste que vu le nombre de personnes qui viennent ici en espérant pouvoir faire leur marché ( qu'on leur fournisse un code tout prêt..fait sur mesure) et qui ne respectent pas la charte du site.....on a tendance à ressentir une certaine "lassitude"..
quelle fonction Excel qui peut faire cet agrégatIl existe plein de façons de faire... et d'exemples sur le net.
Dim F As Worksheet, C As Range, E As Range, ou As Long, S As WorksheetVoilà !
Set S = Worksheets("synthese")
S.Cells.ClearContents
ou = 1
For Each F In Worksheets
If Not F Is S Then
On Error Resume Next 'juste pour le cas fort improbable où une feuille serait comploètement vide
For Each C In F.Columns("A").SpecialCells(xlCellTypeConstants)
On Error GoTo 0
Set E = S.Columns("A").Find(what:=C.Value, LookIn:=xlValues, lookat:=xlWhole)
With S
If E Is Nothing Then
.Range("A" & ou).Value = C.Value
.Range("B" & ou).Value = C.Offset(0, 1).Value
ou = ou + 1
Else
.Range("B" & E.Row).Value = .Range("B" & E.Row).Value + C.Offset(0, 1).Value
End If
End With
Next
End If
Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionDim F As Worksheet, ou As Long, S As Worksheet, T As Range, asuppr As Range===>> autre approche ===>> autre gymnastique ===>> autre code
Set S = Worksheets("synthese")
S.Cells.ClearContents
ou = 1
For Each F In Worksheets
If Not F Is S Then
On Error Resume Next 'juste pour le cas fort improbable où une feuille serait comploètement vide
Set T = F.Columns("A").SpecialCells(xlCellTypeConstants)
F.Range("A1:B" & T.Rows.Count).Copy Destination:=S.Range("A" & ou)
ou = ou + T.Rows.Count
On Error GoTo 0
End If
Next
For ou = S.Columns("A").SpecialCells(xlCellTypeConstants).Rows.Count To 1 Step -1
If WorksheetFunction.CountIf(S.Range("A1:A" & ou), S.Range("A" & ou).Text) = 1 Then
S.Range("B" & ou).Value = WorksheetFunction.SumIf(S.Columns("A"), S.Range("A" & ou).Text, S.Columns("B"))
Else
If asuppr Is Nothing Then Set asuppr = S.Rows(ou) Else Set asuppr = Union(asuppr, S.Rows(ou))
End If
Next
asuppr.EntireRow.Delete