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 :

Boucler sur le nom des feuilles pour récupérer des données


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut Boucler sur le nom des feuilles pour récupérer des données
    Bonjour

    j'ai des feuilles qui se nomment Pic1, Pic2, Pic3, ... , Pic20 et d'autres feuilles avec des noms différents.

    Je voudrais pouvoir boucler sur les feuilles intitulées Pic1 à Pic20 J'ai écrit le code suivant mais ça ne fonctionne pas :

    Ws est défini en Worksheet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Colonne = 2 To DerC Step 1
        Col = Colonne - 1
        Ws = "Pic" & Col
        For Ligne = 1 To DerL Step 1
            Sheets("Pics").Cells(Ligne, Colonne) = Ws.Cells(Ligne, 2)
        Next Ligne
    Next Colonne
    Le but est de récupérer chaque deuxième colonne des feuilles pic1 à Pic20 et de les recopier dans les colonnes B (colonne B de la feuille Pic1), C(colonne B de la feuille Pic2), ...(colonne B de la feuille Pic...), U (colonne B de la feuille Pic20) dans une feuille nommée Pics.

    Merci pour votre aide

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Ws n'est pas un objet Worksheet mais une variable de type string.
    Tu peux l'utiliser comme ci dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Colonne = 2 To DerC Step 1
        Col = Colonne - 1
        Ws = "Pic" & Col
        For Ligne = 1 To DerL Step 1
            Sheets("Pics").Cells(Ligne, Colonne) = Worksheets(Ws).Cells(Ligne, 2)
        Next Ligne
    Next Colonne

  3. #3
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour essai comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    i = 1
    'je boucle sur chaque feuille du classeur
    For Each ws In Worksheets
      'si le nom de la feuille = PIC1 etc... alors 
      If ws.Name = "Pic" & i Then
        'ici le code qui doit s'effectuer
     
        i = i + 1
      End If
    Next ws
    End Sub

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

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Je te propose aussi une autre approche (qu'il faudra tester) en utilisant les objets Worksheets

    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
    Dim Sh As Worksheet
    Dim col As Integer
     
    col = 2
     
    For Each Sh In ThisWorkbook.Worksheets
     
        If Left(UCase(Sh.Name), 3) = "PIC" And UCase(Sh.Name) <> "PICS" Then
     
            Sh.Columns(2).Copy ThisWorkbook.Worksheets("Pics").Cells(1, col)
            col = col + 1
     
        End If
     
    Next Sh

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Points : 153
    Points
    153
    Par défaut
    Merci beaucoup à vous pour votre réponse rapide et qui fonctionne.

    Encore merci

    Bonne soirée

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  2. Réponses: 4
    Dernier message: 29/03/2011, 17h13
  3. Réponses: 6
    Dernier message: 30/06/2010, 18h34
  4. automate pour récupérer des données sur un site web
    Par castor75 dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 19h59
  5. récupérer des valeurs pour une semaine donnée
    Par duck54 dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/05/2006, 01h13

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