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 :

VBA une fonction pour passer à la feuille suivante.


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut VBA une fonction pour passer à la feuille suivante.
    Bonjour à tous,

    Voilà j'ai un classeur excel qui contient environ 50 feuilles qui doivent avoir une mise en forme identique.

    Je doit créer un nouveaux classeur tous les mois, j'enregistre donc une copie sous un autre nom et je remets en forme chaque feuille du classeur.

    J'ai donc enregistrer une macro permettant de recopier la mise en forme de la première feuille sur toutes les autres pages mais pour se faire j'ai recopier 50 fois le code en changeant le nom de la feuille à chaque fois.

    Ma question est existe t'il une commande permettant en gros de dire à excel de continuer la macro jusqu'à ce qu'il n'y ai plus de page à traiter ??

    En gros ce que j'ai fait ressemble à ca :

    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
       Sheets("lot3c1").Select
        Rows("10:43").Select
        Selection.Copy
        Sheets("lot3c2").Select
        Range("A10").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A10").Select
        Sheets("lot3c1").Select
        ActiveWindow.SmallScroll Down:=-18
        Range("A10").Select
        Sheets("lot3c2").Select
     
        Sheets("lot3c1").Select
        Rows("10:43").Select
        Selection.Copy
        Sheets("lot3c3").Select
        Range("A10").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A10").Select
        Sheets("lot3c1").Select
        ActiveWindow.SmallScroll Down:=-18
        Range("A10").Select
        Sheets("lot3c3").Select
     
        Sheets("lot3c1").Select
        Rows("10:43").Select
        Selection.Copy
        Sheets("lot3c4").Select
        Range("A10").Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Range("A10").Select
        Sheets("lot3c1").Select
        ActiveWindow.SmallScroll Down:=-18
        Range("A10").Select
        Sheets("lot3c4").Select
     
    '.....
    Cela fonctionne mais ce n'ai pas pratique car si je rajoute une feuille, il faut que je change la macro...

    Voilà si quelqu'un peut m'aider...

    Merci et bonnes fêtes à tous !!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    bonjour,

    Le code ci dessous te permet de boucler sur toutes les feuilles du classeur

    il te reste a adapter a ta macro et besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim sh As Worksheet
     
    For Each sh In ThisWorkbook.Worksheets
        'code  effectuer sur la feuille
    Next

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a plusieurs solutions en voici une
    La procédure doit être enregistrée dans un module (Insertion/Module)
    La procédure fait une boucle de 2 à nombre de feuilles du classeur
    fait un collage spécial sur les feuilles "lot3c" & sht (2 à x)
    un moment donné la procédure se met en erreur tentant de faire un collage sur une feuille inexistante et la procédure interceptée s'arrête
    Cela présuppose que les feuilles sont bien nommées de 2 à x sans interruption
    Bonne journée
    Philippe Tulliez
    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
     
     Sub CopySheet()
      Dim sht As Integer
      Sheets("lot3c1").Rows("10:43").Copy
      ' Parcourt toute les feuilles du classeur
      For sht = 2 To ThisWorkbook.Worksheets.count
        On Error GoTo chkerror
        With Sheets("lot3c" & sht).Range("A10")
        .PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone
        End With
      Next
      Application.CutCopyMode = False
      Exit Sub
    chkerror:
     If Err.Number = 9 Then
       ' L'indice n'appartient pas à la description
       Application.CutCopyMode = False
       On Error GoTo 0
       Exit Sub ' Fin de la procédure
      Else
       ' Autre erreur que 9
       MsgBox "Erreur " & Err.Number
      End If
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut
    J'ai essayé la solution de corona qui était la plus simple pour moi, ça fonctionne super bien. Il ne me reste plus qu'a l'étudier pour comprendre comment ca marche.

    Merci beaucoup

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

Discussions similaires

  1. [XL-2007] VBA : ajout fonction pour une alerte
    Par Serenay dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2015, 08h55
  2. [XL-2007] Code pour passer à la ligne suivante si une est déja prise
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/06/2011, 16h05
  3. [XL-2000] Passer à la feuille suivante avec une seule touche ?
    Par noboud dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/04/2010, 13h45
  4. [Incompatibilité] Une fonction pour un ascenseur interne
    Par sempire dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/10/2005, 10h42
  5. Détourner une fonction pour copier un fichier en mémoire
    Par Rodrigue dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/11/2003, 08h29

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