[VBA] Selection de feuilles à nom variable

Fermé
tomtom - 2 avril 2008 à 15:07
 bidouilleu_R - 27 mai 2008 à 16:18
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

1 réponse

bidouilleu_R
27 mai 2008 à 16:18
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
0