XL 2016 Consolider un fichier

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 !

linebich

XLDnaute Junior
Bonsoir forum j'espere que vous allez bien , je demande votre aide pour trouver une solution à mon probleme en fait mon objectif c'est de consolider des feuilles excel contenant le meme model de tableau dans une feuille globale j'ai ecris ce code , sauf que je sais pas comment est excel va connaitre les tableau dans les feuilles et ne me copie pas les entête
Sub transfert()

Dim i As Byte
Dim DLig As Long

DLig = Range("A7").End(xlDown).Row + 1

For i = 1 To Worksheets.Count

If UCase(Sheets(i).Name) <> "Base-Global" Then

Sheets(i).Cells("A1").CurrentRegion.Copy Sheets("Base-Global").DLig



End If

Next

End Sub
 
Bonsoir Staple Merci pour ton retour
ça marche trés bien avec le test sauf que moi le nombre de feuilles doit etre calcué a chaque fois
et j'ai pas compris
' en redimensionnant à chaque fois la plage de cellules de 10 lignes et 3 colonnes
moi j'ai de A2 a O le nombre de ligne change
comment est ce que je peux paramétrer ton code
cordialement



Sub Consolidation()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Base-Global" Then
'ici on "recopie" les valeurs seules
' en redimensionnant à chaque fois la plage de cellules de 10 lignes et 3 colonnes
'taille des tableaux des 3 feuilles à consolider
Sheets("Base-Global").Cells(Rows.Count, 1).End(xlUp)(2).Resize(10, 3).Value = ws.Range("A2:O1000").Value 'ICi j'ai pris le maximum
End If
Next
End Sub
 
Re

de A à C, il y a bien 3 colonnes
Et dans mon exemple , les tableaux comptaient 10 lignes
Donc il faut adapter en conséquence
De A à O, je doute fort qu'il y ait 3 colonnes
Et O1000 ne correspond assurément pas à O10
Tu vois où je veux en venir et où il faut adapter dans le code ? 😉
 
Re

Donc tu n'as compris l’adaptation à faire?
Avec ton exemple, il fallait ceci 😉
VB:
Sub ConsolidationII()
Dim ws As Worksheet
For Each ws In Worksheets
If Not ws.Name = "Base-Global" Then
Sheets("Base-Global").Cells(Rows.Count, 1).End(xlUp)(2).Resize(999, 15).Value = ws.Range("A2:O1000").Value
End If
Next
End Sub
 
Re

Pour finir (il est tard, faut que j'aille me brosser les dents et enfiler mon pyjama en pilou 😉), une version pour si les tableaux sont de taille différente.
VB:
Sub ConsolidationIII()
Dim ws As Worksheet, P As Range, X&, Y&
For Each ws In Worksheets
If Not ws.Name = "Base-Global" Then
Set P = ws.Range(ws.Cells(2, "A"), ws.Cells(Rows.Count, "O").End(xlUp))
X = P.Rows.Count: Y = P.Columns.Count
Sheets("Base-Global").Cells(Rows.Count, 1).End(xlUp)(2).Resize(X, Y).Value = P.Value
End If
Set P = Nothing
Next
End Sub
 
Re

Je veux m'endormir en étant sur que tu as compris mes deux derniers messages.
Donc la charte a dit
4 – Le langage SMS et le verlan ne sont pas autorisés sur les forums.
J'ai supputé que vrm= > vraiment
Donc tu as franchi un interdit ! 😉

Maintenant je peux aller dormir serein et apaisé et te laisser consolider à donf. 😉

Merde, j'ai franchi aussi
(mais je ne fais jamais de pompes en pyjama)

Allez, bonne nuit et bonne consolidation 😉
 
Bonjour le fil,

Dans la macro de Stapple du message n°8 :

VB:
Sub ConsolidationIII()
Dim ws As Worksheet, P As Range, X&, Y&
For Each ws In Worksheets
If Not ws.Name = "Base-Global" Then
Set P = ws.Range(ws.Cells(2, "A"), ws.Cells(Rows.Count, "O").End(xlUp))
X = P.Rows.Count: Y = P.Columns.Count
Sheets("Base-Global").Cells(Rows.Count, 1).End(xlUp)(2).Resize(X, Y).Value = P.Value
End If
Set P = Nothing
Next
End Sub

Je cherche à la modifier de manière à ce qu'elle ne recopie pas la ligne 1 de chaque feuille (titres) j'ai essayé 2 ou trois modifs, mais sans succès.
 
Bonsoir Jiheme

Je viens de refaire le test
Les lignes de titre ne sont pas copiées.

EDITION: Essaies ce petit test
Sur un classeur vierge, lance la macro ci-dessous
(pour créer un classeur de test)
VB:
Sub Créer_Exemple()
Dim i As Byte, P As Range
For i = 1 To 4
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Test_" & i
Next
For i = 1 To 4
With Sheets("Test_" & i)
.Range("A1:O1") = "=""ITEM_""&COLUMN()"
Set P = .Range("A2:O" & Application.RandBetween(1, 37))
P.Formula = "=CHAR(64+" & i & ")&ADDRESS(ROW(),COLUMN(),4)"
P = P.Value
Set P = Nothing
End With
Next
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Base-Global"
Application.DisplayAlerts = False
Sheets(1).Delete
End Sub
Puis lance la macro ConsolidationIII
Tu verras que les lignes de titre ne sont pas recopiées 😉
 
Dernière édition:
- 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
332
Réponses
3
Affichages
518
Réponses
40
Affichages
2 K
Retour