IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Appliquer même code sur plusieurs feuilles [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut Appliquer même code sur plusieurs feuilles
    Bonjour à tous,

    Je voudrais appliquer un code VBA sur plusieurs feuilles, sachant que j'ai 9 feuilles (Date 1, Date 2, ......Date 9)
    Pour éviter que je répete le même code plusieurs fois, y a-il un moyen de créer une boucle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Sub traitement()
    'Déclaration des variables
    Dim oRng As Range
    Dim t As Integer
    Dim ListeLig As String
    Dim LigChoisie As String
    Dim i asInteger
     
     
    'Avec "Date 1
    With Worksheets("Date 1)
        'On redéfinie oRng sur O6 de "Date 1
        Set oRng = .Range("O6")
     
        'On boucle de i = dernière ligne non vide de la colonne 15 à 1 (décroissant)
        For i = .Cells(.Cells.Rows.Count, 15).End(xlUp).Row - 1 To 1 Step -1
            'Si on a une valeur numérique en oRng avec un décalage de i lignes...
            If IsNumeric(oRng.Offset(i, 0)) Then
                '... alors sur la colonne à droite on place sa valeur absolue
                oRng.Offset(i, 34) = Abs(oRng.Offset(i, 0))
            End If
        Next i
     
    End With
     
     
      Sheets("Date 1).Select
        Sheets("Date 1).AutoFilterMode = False
        Range("AW5").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("Date 1).AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Date 1).AutoFilter.Sort.SortFields.Add Key:= _
            Range("AW:AW"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption _
            :=xlSortNormal
        With ActiveWorkbook.Worksheets("Date 1).AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Rows("6").Select
        Selection.Copy
        Sheets("CPN1").Select
        Range("A5").Select
        ActiveSheet.Paste
     
    Randomize
     
           With ThisWorkbook.Worksheets("Date 1)
            ListeLig = ""  ' initialisation de la liste des lignes choisies pour cette feuille
            For i = 1 To 2  ' on va piocher deux lignes
     
                ' définition de la ligne piochées
                LigChoisie = Int((.Cells(.Rows.Count, 1).End(xlUp).Row - 7) * Rnd + 7)
     
                ' tant que la ligne piochée a déjà été utilisée
                While ListeLig Like "*$" & LigChoisie & "$*"
                    ' on en pioche une autre
                    LigChoisie = Int((.Cells(.Rows.Count, 1).End(xlUp).Row - 7) * Rnd + 7)
                Wend
     
                ' on ajoute la ligne piochée à la liste des lignes utilisées
                ListeLig = ListeLig & "$" & LigChoisie & "$"
                ' on écrit la ligne
               .Cells(LigChoisie, 1).Resize(1, .UsedRange.Columns.Count).Copy ThisWorkbook.Worksheets("CPN1").Cells(6, 1).Offset(t, 0)
                t = t + 1
            Next i
           End With
    End Sub


    Vous m'avez compris, je voudrais refaire le code pour chaque feuille.

    Merci pour votre réponse.
    Cordialement,
    Freudsw

  2. #2
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    Bonjour,
    Bien entendu il y a un moyen.
    mais je ne le connais pas.





    je blague
    utilise donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim ws as worksheet
    For Each Ws In ThisWorkbook.Worksheets 
    '... ton code
    next ws
    a ton service

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Par défaut Merci pasdechances
    Merci pour l'astuce, mais il y a un petit soucis, je ne veux pas appliquer ce code sur toutes les feuilles de mon classeurs mais juste sur les feuilles qui s'appelle (Date 1, Date 2,......jusqu'a Date 9).

    Merci encore,
    Cordialement,
    Freudsw

  4. #4
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    haha .

    et si je te dit condition, a quoi pense tu jeune padawan ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Somme des cellules de la même date sur plusieurs feuilles
    Par titi83 dans le forum Excel
    Réponses: 11
    Dernier message: 22/03/2014, 13h37
  2. [XL-2003] Avoir le même code pour plusieurs feuilles
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/01/2010, 14h29
  3. Appliquer un même code sur plusieurs feuilles Excel
    Par mouncefdi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/04/2009, 11h24
  4. Execution de code sur plusieurs feuilles
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/12/2006, 12h12
  5. [excel] même code sur plusieurs feuilles
    Par sabotage dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 13h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo