[VBA] Selection de feuilles à nom variable
tomtom
-
bidouilleu_R -
bidouilleu_R -
Bonjour,
je dispose d'un fichier excel contenant des données à récupérer dispatchées dans pleins de feuilles à nom variable.
Point positif, mes données "utiles" se situent systématiquement dans les mêmes cellules (B2,B3 et A20).
J'aimerai créer une macro VBA qui copirait le contenu des cellules "utiles" dans un tableau d'une nouvelle feuille.
Mon problème est que le classeur excel est constitué d'un nombre important de feuilles au noms variables.
Je ne sais pas comment passer automatiquement d'une feuille à l'autre, vu que je ne connais pas forcément le nom de la feuille i, ni de la feuille i-1, ni de la feuille i+1.
Quelqu'un peut-il m'aider ?
Merci d'avance !
Thomas
je dispose d'un fichier excel contenant des données à récupérer dispatchées dans pleins de feuilles à nom variable.
Point positif, mes données "utiles" se situent systématiquement dans les mêmes cellules (B2,B3 et A20).
J'aimerai créer une macro VBA qui copirait le contenu des cellules "utiles" dans un tableau d'une nouvelle feuille.
Mon problème est que le classeur excel est constitué d'un nombre important de feuilles au noms variables.
Je ne sais pas comment passer automatiquement d'une feuille à l'autre, vu que je ne connais pas forcément le nom de la feuille i, ni de la feuille i-1, ni de la feuille i+1.
Quelqu'un peut-il m'aider ?
Merci d'avance !
Thomas
A voir également:
- [VBA] Selection de feuilles à nom variable
- Comment faire un livret avec des feuilles a4 - Guide
- Nom de l'adresse - Forum Jeux vidéo
- Bruler des feuilles de laurier - Guide
- Nom de compte steam exemple - Forum Jeux vidéo
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Sub tout_en_unefeuille()
Dim NbFeuille As Integer
'premièrement création de la nouvelle feuille
Dim XlF As Variant
Dim Trouve As Boolean
Trouve = False
For Each XlF In Worksheets
If XlF.Name = "Résultat" Then Trouve = True
Next
Sheets(1).Select ' on vient se placer sur la première feuille
If Trouve Then
MsgBox "La feuille existe déjà...", vbCritical, "Alerte Création feuille"
Exit Sub ' la feuille existe.... on quitte
Else
Sheets.Add
ActiveSheet.Name = "Résultat"
End If
' ecriture de l'entête
Sheets("Résultat").Select
Range("A1").Value = "Titre1"
Range("B1").Value = "Titre2"
Range("C1").Value = "Titre3"
'Nombre de feuille ???
NbFeuille = Sheets.Count
For I = 2 To NbFeuille
Sheets(I).Select
Range("A20").Copy
Sheets("Résultat").Select
Range("A65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Sheets(I).Select
Range("B2").Copy
Sheets("Résultat").Select
Range("B65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Sheets(I).Select
Range("b3").Copy
Sheets("Résultat").Select
Range("c65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next
MsgBox "Fin du traitement", vbInformation, "Fin"
Sheets("Résultat").Select
End Sub
Dim NbFeuille As Integer
'premièrement création de la nouvelle feuille
Dim XlF As Variant
Dim Trouve As Boolean
Trouve = False
For Each XlF In Worksheets
If XlF.Name = "Résultat" Then Trouve = True
Next
Sheets(1).Select ' on vient se placer sur la première feuille
If Trouve Then
MsgBox "La feuille existe déjà...", vbCritical, "Alerte Création feuille"
Exit Sub ' la feuille existe.... on quitte
Else
Sheets.Add
ActiveSheet.Name = "Résultat"
End If
' ecriture de l'entête
Sheets("Résultat").Select
Range("A1").Value = "Titre1"
Range("B1").Value = "Titre2"
Range("C1").Value = "Titre3"
'Nombre de feuille ???
NbFeuille = Sheets.Count
For I = 2 To NbFeuille
Sheets(I).Select
Range("A20").Copy
Sheets("Résultat").Select
Range("A65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Sheets(I).Select
Range("B2").Copy
Sheets("Résultat").Select
Range("B65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Sheets(I).Select
Range("b3").Copy
Sheets("Résultat").Select
Range("c65535").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Next
MsgBox "Fin du traitement", vbInformation, "Fin"
Sheets("Résultat").Select
End Sub