Appliquer automatiquement la macro a chaque feuille

Bonjour,

J'ai un classeur composé de plusieurs feuilles. Je veux que certaines données de chaque feuille ayant 2014 dans le nom soit copié dans la feuille synthèse. Voici les problèmes que je rencontre :

  • je n'arrive pas à trouver une macro sélectionnant que les onglets ayant 2014 dans le nom. J'ai biaisé en lui demandant d'appliquer la macro pour toutes les feuilles n'ayant pas le nom synthèse. Y-a-t-il moyen de faire autrement ???
  • je suis obligée de me mettre sur chaque onglet et d'exécuter la macro. Comment faire pour que la macro s'éxécute pour tous les onglets du classeur ?
  • une fois qu'il a copié les données dans la feuille Synthèse, il réapplique la macro en copiant les données de la feuille synthèse.
  • comment fait-on pour sélectionner une partie d'un tableau variable d'une feuille à l'autre et pouvant contenir des cellules vides ?

Voici la macro que j'ai crée

sub test()

'déclaration de la variable feuille en tant que feuille

Dim Feuille As Worksheet

'pour chaque élément (chaque onglet) Feuille de la collection feuilles du classeur For Each Feuille In Worksheets

'si le nom de la feuille différent de synthèse alors

If Feuille.Name <> "Synthèse" Then

'sélectionne le tableau à partir de la cellule b3

Range(Range("b3").End(xlDown), Range("b3").End(xlToRight)).Copy

'sélectionne la feuille synthèse et se postionne dans la dernière ligne du tableau

Worksheets("Synthèse").Activate

Range("A1048576").End(xlUp).Select

'Décalage de la ligne

ActiveCell.Offset(1, 0).Select

'colle les données

ActiveSheet.Paste

End If

Next Feuille

End Sub

Merci par avance de votre aide

Bonjour,

non testé :

Sub test()
    'déclaration de la variable feuille en tant que feuille
    Dim Feuille As Worksheet
    'pour chaque élément (chaque onglet) Feuille de la collection feuilles du classeur For Each Feuille In Worksheets
    'si le nom de la feuille contient 2014 alors
    For Each Feuille In Sheets
        If InStr(Feuille.Name, "2014") > 0 Then
            'sélectionne le tableau à partir de la cellule b3
            Range(Range("b3").End(xlDown), Range("b3").End(xlToRight)).Copy
            'sélectionne la feuille synthèse et se postionne dans la dernière ligne du tableau
            Worksheets("Synthèse").Activate
            Range("A1048576").End(xlUp).Select
            'Décalage de la ligne
            ActiveCell.Offset(1, 0).Select
            'colle les données
            ActiveSheet.Paste
        End If
    Next Feuille
End Sub

-comment fait-on pour sélectionner une partie d'un tableau variable d'une feuille à l'autre et pouvant contenir des cellules vides ?

Trop vague, mettre un fichier explicatif.

eric

Merci pour votre réponse mais ça ne fonctionne pas. Je crois que je vais laisser passer le we et peut être que la solution me viendra au retour.

Merci de votre aide

Bon we

Bonjour,

Ma macro fonctionne, voici le code que j'ai utilisé

Private Sub CommandButton1_Click()

Call Ajout_données_dans_synthèse

End Sub

Sub Ajout_données_dans_synthèse()

Dim Feuille As Worksheet

Dim i As Integer

'Pour remplace la boucle for each on compte le nombre d'onglet et on vérifie la difference a chaque boucle

For i = 1 To Worksheets.Count

'On vérifie que le nom de l'onglet possede au moins une occurence de "2014"

If InStr(Worksheets(i).Name, "2014") > 0 Then

'Si Oui on active la page

Worksheets(i).Activate

'On vérifie que la colonne date visite n'éxiste pas si il existe on passe a la page suivante

If Range("b1") <> "DATE VISITE" Then

'Insére une colonne B en B1 mettre date visite

Columns(2).Insert

Range("b1").FormulaR1C1 = "DATE VISITE"

'Sélectionne cellule b3 et colle la formule pour que le nom de l'onglet apparaisse

'puis copie dans toute la colonne b du tableau

Range("b3").Select

ActiveCell.FormulaR1C1 = _

"=MID(CELL(""nomfichier"",R1C1),FIND(""]"",CELL(""nomfichier"",R1C1))+1,32)"

'On supprime le contenu de la cellule pour l'esthétisme du tableau ^^

Range("b2").ClearContents

'sélectionne le tableau à partir de la cellule b3

Range(Range("b3").End(xlDown), Range("b3").End(xlToRight)).Copy

'sélectionne la feuille synthèse et se postionne dans la dernière ligne du tableau

Worksheets("Synthèse").Activate

Range("A1048576").End(xlUp).Select

'Décalage de la ligne

ActiveCell.Offset(1, 0).Select

'colle les données en faisant collage des valeurs et du format

With Selection

.PasteSpecial Paste:=xlPasteValues

.PasteSpecial Paste:=xlPasteFormats

End With

End If

End If

Next i

End Sub

Bon week-end

Rechercher des sujets similaires à "appliquer automatiquement macro chaque feuille"