Assembler plusieurs feuilles

ICE_SACCO

XLDnaute Junior
Bonjour,

Je cherche à assembler plusieurs feuilles en récupérent chaque ligne pour les mettre dans une feuille commune.

Mon problème cela me récupère que une ligne par feuil même s'il y en a plusieurs. Et j'aimerai aussi que pour chaque ligne il y est une mise en page cadrillage

'Début assemblage

Dim i As Long, j As Long 'Déclare deux variables numériques
Worksheets("Portefeuille Projet").Select 'Active la feuille nommée SYNTHESE
'Passe chaque feuille en revue en partant de la 3eme jusqu'à n
For i = 3 To Worksheets.Count - 1 'WorkSheets.Count donne le nombre total de feuilles moins la dernière
'j prend la valeur du numéro de ligne de la 1ere cellule vide de la colonne A
'A chaque passage dans la boucle j sera incrémentée de 1 du fait de l 'inscription des nouvelles données
j = Range("A65536").End(xlUp).Row + 1
With Worksheets(i)
'Sur la ligne déterminée par j, la 1ere cellule prend la valeur de la cellule A1 de la feuille dont l'index est égal à i
Cells(j, 1).Value = .Range("A3").Value
Cells(j, 2).Value = .Range("B3").Value
Cells(j, 3).Value = .Range("C3").Value
Cells(j, 4).Value = .Range("D3").Value
Cells(j, 5).Value = .Range("E3").Value
Cells(j, 6).Value = .Range("F3").Value
Cells(j, 7).Value = .Range("G3").Value
Cells(j, 8).Value = .Range("H3").Value
Cells(j, 9).Value = .Range("I3").Value
Cells(j, 10).Value = .Range("J3").Value
Cells(j, 11).Value = .Range("K3").Value
Cells(j, 12).Value = .Range("L3").Value
Cells(j, 13).Value = .Range("M3").Value
Cells(j, 14).Value = .Range("N3").Value
Cells(j, 15).Value = .Range("O3").Value
Cells(j, 16).Value = .Range("P3").Value
Cells(j, 17).Value = .Range("Q3").Value
Cells(j, 18).Value = .Range("R3").Value
Cells(j, 19).Value = .Range("S3").Value
Cells(j, 20).Value = .Range("T3").Value
Cells(j, 21).Value = .Range("U3").Value
Cells(j, 22).Value = .Range("V3").Value
Cells(j, 23).Value = .Range("W3").Value
Cells(j, 24).Value = .Range("X3").Value
Cells(j, 25).Value = .Range("Y3").Value
Cells(j, 26).Value = .Range("Z3").Value
Cells(j, 27).Value = .Range("AA3").Value
Cells(j, 28).Value = .Range("AB3").Value
Cells(j, 29).Value = .Range("AC3").Value
Cells(j, 30).Value = .Range("AD3").Value
Cells(j, 31).Value = .Range("AE3").Value
Cells(j, 32).Value = .Range("AF3").Value
Cells(j, 33).Value = .Range("AG3").Value
Cells(j, 34).Value = .Range("AH3").Value
Cells(j, 35).Value = .Range("AI3").Value
Cells(j, 36).Value = .Range("AJ3").Value
Cells(j, 37).Value = .Range("AK3").Value
Cells(j, 38).Value = .Range("AL3").Value
Cells(j, 39).Value = .Range("AM3").Value
End With
Next 'Passe à la feuille suivante

Merci d'avance
 

ICE_SACCO

XLDnaute Junior
Moi non plus je ne vois pas: je n'ai pas le classeur sous les yeux, pas plus que de cellule vide, donc.
Mais il est assez courant de prendre NbLignes = .[A1000000].End(xlUp).Row - 2
C'est un classeur standard avec des feuilles qui augmenteront au fil du temps. Le nombre de ligne aussi, dans chaque ligne il peut y avoir des cellule vide mais la ligne va de A à AM et doit être récuperer en l'état.

Je récupère sur chaque feuille qu'une seule ligne même quand il y en a d'autre ???? Par contre la cellule A sera toujours rempli sur les ligne a récupérer.

Je n'ai pas de grosse notion pour les macro donc je ne vois pas comment incorporer dans le code la boucle.
 

ICE_SACCO

XLDnaute Junior
Bonjour,

Je ne vois pas comment faire afin d’insérer la boucle de récuperer toutes les lignes dans mon code :

Dim i As Long, j As Long, NbLigne As Long


Worksheets("Portefeuille Projet").Select 'Active la feuille nommée Portefeuille Projet
'Passe chaque feuille en revue en partant de la 3eme jusqu'à n
For i = 3 To Worksheets.Count - 1 'WorkSheets.Count donne le nombre total de feuilles moins la dernière
'j prend la valeur du numéro de ligne de la 1ere cellule vide de la colonne A
'A chaque passage dans la boucle j sera incrémentée de 1 du fait de l 'inscription des nouvelles données
j = Range("A65536").End(xlUp).Row + 1
With Worksheets(i)


'Sur la ligne déterminée par j, la 1ere cellule prend la valeur de la cellule A1 de la feuille dont l'index est égal à i

Range(Cells(j, 1), Cells(j, 39)).Value = .Range("A3:AM3").Value
End With
Next 'Passe à la feuille suivante
End Sub 'Fin

Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Combien de fois faudra-t-il que je vous le dise ?
VB:
j = Range("A65536").End(xlUp).Row + 1
For i = 3 To Worksheets.Count - 1
   With Worksheets(i)
      NbLignes = .[A1000000].End(xlUp).Row - 2
      Cells(j, 1).Resize(NbLignes, 39).Value = .[A3].Resize(NbLignes, 39).Value
      j = j + NbLignes: End With: Next i
 

ICE_SACCO

XLDnaute Junior
Bonjour,

Merci pour votre retour mais j'ai une err d'exécution 1004 sur la ligne

Cells(j, 1).Resize(NbLignes, 39).Value = .[A3].Resize(NbLignes, 39).Value

Mes variable sont bien déclarées
Dim i As Long, j As Long, NbLignes As Long

Merci d'avance pour votre aide.
 

gosselien

XLDnaute Barbatruc
Bonjour,

Merci pour votre retour mais j'ai une err d'exécution 1004 sur la ligne

Cells(j, 1).Resize(NbLignes, 39).Value = .[A3].Resize(NbLignes, 39).Value

Mes variable sont bien déclarées
Dim i As Long, j As Long, NbLignes As Long

Merci d'avance pour votre aide.
Et tout ça sans jamais avoir le fichier sous les yeux...et après on va entendre "oui mais il est confidentiel..."
pfffff

P.
 

Discussions similaires

Réponses
4
Affichages
418

Statistiques des forums

Discussions
314 629
Messages
2 111 345
Membres
111 109
dernier inscrit
djameldel