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) Utiliser nom de feuille comme variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut (VBA) Utiliser nom de feuille comme variable
    Bonjour à toutes et à tous !

    Nouvelle sur le forum, vous pouvez m'appeler Kaera !

    Mon problème est le suivant :

    J'ai un certain nombre de feuilles nommées numériquement (1, 2, 3 ,4...).
    Chaque feuille paire contient des infos que je veux copier et coller sur la feuille impaire qui la précède.

    Concrètement, en mots, ça donne par exemple :
    Sélectionner feuille 2
    Copier "A1:D5"
    Sélectionne feuille 1
    Coller sur "A1:D5"

    Sélectionner feuille 4
    Copier "A1:D5"
    Sélectionne feuille 3
    Coller sur "A1:D5"

    Etc.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim sh As Worksheet
     
        For Each sh In ThisWorkbook.Worksheets
     
            If sh.Name Mod 2 = 0 Then
            sh.Range("A25:D26").Copy
            ActiveSheet.Previous.Select
            Selection.Range("A25:D26").Paste
            ActiveSheet.Next.Select
            ActiveSheet.Next.Select
            End If
        Next sh
    NB : j'ai écrit deux fois "ActiveSheet.Next.Select" sinon ça va tourner en boucle sur les deux premières feuilles !

    Erreur "incompatibilité de type" sur l'utilisation du sh.Name Mod 2 ...
    Auriez-vous des solutions ?
    Je ne parviens pas à définir sh.Name comme variable

    Un grand merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 106
    Par défaut
    Salut et bienvenu
    Je procéderais plutôt comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim sh As Worksheet
    Dim iName As Integer
     
        'On boucle de 2 en 2 (step 2)
        'Il faudra peut-être corrigé la valeur retournée par le .count
        For iName = 2 To ThisWorkbook.Worksheets.Count Step 2
            'On pointe la feuille ayant la valeur pour nom
            Set sh = ThisWorkbook.Worksheets(CStr(iName))
            'On copie les donnée dans la feuille précédente
            sh.Range("A25:D26").Copy ThisWorkbook.Worksheets(CStr(iName - 1))
        Next
    J'ai juste un doute sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Worksheets.Count
    ça ne retournera pas forcement la bonne valeur en fonction du nombre d'onglet présent dans le classeur qui ne font pas partie des onglets ayant un valeur numérique en tant que nom.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Bonjour Qwazerty !

    Merci de ton accueil et merci pour ton aide.
    J'ai appliqué ton code dans ma macro mais il en résulte une erreur "La méthode Copy de la classe Range" sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("A25:D26").Copy ThisWorkbook.Worksheets(CStr(iName - 1))
    ? ?

    Merci d'avance !

    Kaera

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 106
    Par défaut
    Oupss

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            sh.Range("A25:D26").Copy ThisWorkbook.Worksheets(CStr(iName - 1)).Range("A25:D26")
    Par contre si tu ne veux copier que les valeur contenues dans les cellule, sans la mise en forme, tu peux aussi mettre ça à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Range("A25:D26").Value = Feuil2.Range("A25:D26").Value
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    J'ai pensé à ce que tu as mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Range("A25:D26").Value = Feuil2.Range("A25:D26").Value
    Mais je ne peux pas indiquer "Feuil1" (ou Feuil2, etc...) parce que le nom de mes feuilles varie. J'ai un nombre de feuilles qui peut varier (je peux en avoir 6 comme je peux en avoir 24!) et le traitement doit se faire pour toutes les feuilles.


    J'ai appliqué la modification que tu m'as donnée mais j'ai une erreur "l'indice n'appartient pas à la sélection" sur la ligne :
    Set sh = ThisWorkbook.Worksheets(CStr(iName))


    Merci d'avance

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 106
    Par défaut
    Décidément... je dis que des bêtises ce matin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
    Dim sh As Worksheet
    Dim iName As Integer
     
        'On boucle de 2 en 2 (step 2)
        'Il faudra peut-être corrigé la valeur retournée par le .count
        For iName = 2 To ThisWorkbook.Worksheets.Count Step 2
            'On pointe la feuille ayant la valeur pour nom
            Set sh = ThisWorkbook.Worksheets(CStr(iName))
            'On copie les donnée dans la feuille précédente
            ThisWorkbook.Worksheets(CStr(iName - 1)).Range("A25:D26").Value = sh.Range("A25:D26").Value
        Next
    End Sub
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. [Toutes versions] formule vba avec nom de feuille variable
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/08/2009, 11h30
  2. Nom d'onglet comme variable
    Par mimic50 dans le forum Excel
    Réponses: 4
    Dernier message: 29/11/2007, 14h06
  3. [VBA-E]Nom de feuille
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/09/2006, 16h42
  4. [VBA E] nom de feuille dans une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/06/2006, 19h53
  5. [VBA-E]type de donnée range en vba utilisée dans une feuille
    Par Yoyo51 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/03/2006, 10h26

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