[VBA] Selection de feuilles à nom variable

tomtom -  
 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
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. bidouilleu_R
     
    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