VBA - Assembler des lignes nouvelle feuille
Résolu/Fermé
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
-
11 mai 2009 à 19:15
derout Messages postés 23 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 28 décembre 2009 - 18 mai 2009 à 12:12
derout Messages postés 23 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 28 décembre 2009 - 18 mai 2009 à 12:12
A voir également:
- VBA - Assembler des lignes nouvelle feuille
- Darkino nouvelle adresse - Guide
- Comment assembler des pdf - Guide
- Flixcord nouvelle adresse - Guide
- Yggtorrent nouvelle adresse - Guide
- Nouvelle version outlook - Guide
2 réponses
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
1
12 mai 2009 à 17:03
12 mai 2009 à 17:03
Toujours personne pour m'aider?
J'ai réalisé le début du code qui me permet:
* de créer la nouvelle feuille (celle où les données des 3 autres feuilles doivent être collées)
*d'importer les données de la 1ère feuille avec le titre
Voici le fichier que j'ai également légèrement modifié:
https://www.cjoint.com/?fmrbKpxwmo
Ce que ne parvient pas à trouver et qui concerne l'import des lignes des feuilles B et C, c'est la façon d'ecrire "pour la feuille "Assemblage", si la ligne est vide alors colle la feuille B puis si la ligne est vide alors colle la feuille C".
Voici mon code:
Sub add_sheet_and_copy_1st_sheet()
Dim new_sheet As Worksheet
Set new_sheet = Worksheets.Add
new_sheet.Name = "Assemblage"
Set new_sheet = Nothing
Sheets("A").Range("1:65536").Copy Destination:=Sheets("Assemblage").Cells.Range("A1")
End Sub
Lorsque vous visionnerez mon code vous constaterez que concernant la zone à copier/coller de la feuille A, j'ai mis: Range("1:65536"). Le soucis c'est que le nombre de lignes est variable (car de nouveaux fichiers sont régulièrements créés).
Avec l'enregistreur de macro j'ai sélectionné la zone de la manière suivante:
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
J'aimerai conserver cette manière de sélectionner la plage à copier/coller.
J'ai essayé d'adapter le code mais quelque chose manque, voici ce que j'ai réalisé :
Sub total_selection()
Dim new_sheet As Worksheet
Set new_sheet = Worksheets.Add
new_sheet.Name = "Assemblage"
Set new_sheet = Nothing
Sheets("A").Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select.Copy Destination:=Sheets("Assemblage").Cells.Range("A1")
End Sub
Donc si quelqu'un pouvait m'aider à écrire la condition "si ligne vide alors collage" ce serait splendide et si quelqu'un connait le code pour les touches CLTR+shift pour sélectionner la plage de données alors qu'il n'hésite pas.
J'attends vos suggestions,
derout
J'ai réalisé le début du code qui me permet:
* de créer la nouvelle feuille (celle où les données des 3 autres feuilles doivent être collées)
*d'importer les données de la 1ère feuille avec le titre
Voici le fichier que j'ai également légèrement modifié:
https://www.cjoint.com/?fmrbKpxwmo
Ce que ne parvient pas à trouver et qui concerne l'import des lignes des feuilles B et C, c'est la façon d'ecrire "pour la feuille "Assemblage", si la ligne est vide alors colle la feuille B puis si la ligne est vide alors colle la feuille C".
Voici mon code:
Sub add_sheet_and_copy_1st_sheet()
Dim new_sheet As Worksheet
Set new_sheet = Worksheets.Add
new_sheet.Name = "Assemblage"
Set new_sheet = Nothing
Sheets("A").Range("1:65536").Copy Destination:=Sheets("Assemblage").Cells.Range("A1")
End Sub
Lorsque vous visionnerez mon code vous constaterez que concernant la zone à copier/coller de la feuille A, j'ai mis: Range("1:65536"). Le soucis c'est que le nombre de lignes est variable (car de nouveaux fichiers sont régulièrements créés).
Avec l'enregistreur de macro j'ai sélectionné la zone de la manière suivante:
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
J'aimerai conserver cette manière de sélectionner la plage à copier/coller.
J'ai essayé d'adapter le code mais quelque chose manque, voici ce que j'ai réalisé :
Sub total_selection()
Dim new_sheet As Worksheet
Set new_sheet = Worksheets.Add
new_sheet.Name = "Assemblage"
Set new_sheet = Nothing
Sheets("A").Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select.Copy Destination:=Sheets("Assemblage").Cells.Range("A1")
End Sub
Donc si quelqu'un pouvait m'aider à écrire la condition "si ligne vide alors collage" ce serait splendide et si quelqu'un connait le code pour les touches CLTR+shift pour sélectionner la plage de données alors qu'il n'hésite pas.
J'attends vos suggestions,
derout
derout
Messages postés
23
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
28 décembre 2009
1
18 mai 2009 à 12:12
18 mai 2009 à 12:12
Vive le monologue...
Merci pour votre soutien à tous. Le peu de code que je demandais était clairement basic (2 minutes d'écriture), j'apprécie votre empressement à répondre aux débutants...
Voici pour ceux qui pourrait avoir besoin de ce code (la feuille a été renommé Z):
Sub ImportLines()
' This will add a new worksheet called "Z"
Worksheets.Add().Name = "Z"
' This will copy all the contents of Worksheets "A" into worksheet "Z"
Worksheets("A").Cells.Copy Destination:=Worksheets("Z").Cells(1, 1)
' This will copy all the contents of Worksheets "B" into the last row of worksheet "Z"
Worksheets("B").Range("A2:G" & Worksheets("B").Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Z").Range("A" & Worksheets("Z").Range("A65536").End(xlUp).Row + 1)
' This will copy all the contents of Worksheets "B" into the last row of worksheet "Z"
Worksheets("C").Range("A2:G" & Worksheets("C").Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Z").Range("A" & Worksheets("Z").Range("A65536").End(xlUp).Row + 1)
End Sub
Merci pour votre soutien à tous. Le peu de code que je demandais était clairement basic (2 minutes d'écriture), j'apprécie votre empressement à répondre aux débutants...
Voici pour ceux qui pourrait avoir besoin de ce code (la feuille a été renommé Z):
Sub ImportLines()
' This will add a new worksheet called "Z"
Worksheets.Add().Name = "Z"
' This will copy all the contents of Worksheets "A" into worksheet "Z"
Worksheets("A").Cells.Copy Destination:=Worksheets("Z").Cells(1, 1)
' This will copy all the contents of Worksheets "B" into the last row of worksheet "Z"
Worksheets("B").Range("A2:G" & Worksheets("B").Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Z").Range("A" & Worksheets("Z").Range("A65536").End(xlUp).Row + 1)
' This will copy all the contents of Worksheets "B" into the last row of worksheet "Z"
Worksheets("C").Range("A2:G" & Worksheets("C").Range("A65536").End(xlUp).Row).Copy _
Destination:=Worksheets("Z").Range("A" & Worksheets("Z").Range("A65536").End(xlUp).Row + 1)
End Sub