Récapitulatif automatique de contenu de cellules
Bonjour à tous, j'ai découvert le VBA depuis peu, j'ai beaucoup utilisé les ligne de code trouvées sur le web, je suis au stade où ça ne m'aide plus, du coup je tente de dévellopper un code adapté à mes besoin, j'avoue toutefois faire un peu de tir au pigeon très chronophage. J'en viens à demander votre aide.
Pour faire un récapitulatif des données des feuilles d'un classeur (dates), je souhaite remplir une plage de donnée sur une feuille 'Planning' avec le contenu de cellules (C80:T80) de toutes les feuilles de ce classeur, ainsi que des données des feuilles qui seront créées ultérieurement.
J'ai fait des centaines d'essais mais j'ai clairement pas compris les boucles ni les variables, (sans les if, msgbox et autres) :
Merci d'avance
Sub datesPlanning
Dim feuille As Worksheet, nomchantier As string, numchro As integer
nomchantier = ActiveSheet.Name
numchro = Range("C80:T80")
For Each feuille In Worksheets
Sheets("nomchantier").Range("numchro") = Sheets("lienplanning")
nomchantier = nomchantier + 1
Next
End Sub
Bonjour Manu, le forum
Voici un code basique qui fait ce que tu souhaites.
Sub datesPlanning()
Dim feuille As Worksheet, Derligne As Integer
Derligne = Sheets("lienplanning").Range("A" & Rows.Count).End(xlUp).Row + 1
For Each feuille In Worksheets
If feuille.Name <> "lienplanning" Then
feuille.Range("C80:T80").Copy
Sheets("lienplanning").Select
Range("A" & Derligne & ":T" & Derligne).Select
ActiveSheet.Paste
Derligne = Derligne + 1
End If
Next
End SubSi tu veux des explications , n'hesite pas.
Et aussi, quand tu crées un sujet sur ce forum, tu auras beaucoup plus de chances de te faire aider si tu joins un fichier.
Cdlt
Bonjour,
Une autre proposition.
Cdlt.
Public Sub ConsolidateData()
Dim wb As Workbook
Dim ws As Worksheet, wsData As Worksheet
Dim rng As Range
Dim lastRow As Long
Const R As String = "C80:T80"
Set wb = ActiveWorkbook
Set wsData = wb.Worksheets("lienplanning")
For Each ws In wb.Worksheets
Select Case ws.Name
Case "lienplanning":
Case Else:
Set rng = ws.Range(R)
With wsData
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lastRow, 1).Resize(, 18).Value = rng.Value
End With
End Select
Next ws
End SubBonjour Le forum, j'ai bien compris, ça marche très bien merci beaucoup !!!
Bonjour Jean-eric, j'ai pas compris tout de suite, un peu plus dur à comprendre, mais ça trés bien aussi, merci beaucoup aussi !!
A bientôt, votre forum est incroyable !!
Salut à tous, finalement, j'ai encore un problème avec ce code:
Les valeurs de mes cellules surces font appel à d'autres cellules ex: dans la cellule C80 j'ai =N4, du coup sur ma feuille récap je n'ai que des href!
J'ai essayé plein de choses rien ne marche et la copie cellule par cellule, ... j'y suis pas arrivé:
(je crois que le codage vba c'est un métier
Sub datesPlanning()
Sheets("lienplanning").Activate
Sheets("lienplanning").Cells.Select
Sheets("lienplanning").Cells.Delete
Dim feuille As Worksheet, Derligne As Integer, Dercolone As Integer
Derligne = Sheets("lienplanning").Range("A" & Rows.Count).End(xlUp).Row + 1
'
Dercolone = Sheets("lienplanning").Range(Columns.Count & Derligne).End(xlUp).Column + 1
For Each feuille In Worksheets
If feuille.Name <> "lienplanning" Or feuille.Name <> "sommaire" Then
feuille.Range("N4").Copy
Sheets("lienplanning").Select
Range(Dercolone & Derligne).Select
ActiveSheet.Paste
Derligne = Derligne + 1
Dercolone = Dercolone + 1
End If
Next
'Puis j'essaie pour une autre cellule:
For Each feuille In Worksheets
If feuille.Name <> "lienplanning" Or feuille.Name <> "sommaire" Then
feuille.Range("H53").Copy
Sheets("lienplanning").Select
Range(Dercolone & Derligne).Select
ActiveSheet.Paste
Derligne = Derligne + 1
Dercolone = Dercolone + 1
End If
Next
End Sub