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 :

Macro pour reporter données d'une feuille "Data" vers cellules de x onglets [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Par défaut Macro pour reporter données d'une feuille "Data" vers cellules de x onglets
    Bonjour à tous,

    J'aurai besoin de votre aide pour correctement réaliser ma macro.

    Dans un classeur, j'ai une feuille "DATA" avec mes données en ligne pour chaque Région/Ville à reporter vers des cellules de X feuilles nommées "Région 1 Ville 1", "Région 1 Ville 2", "Région 2 Ville 1", etc.

    Feuille "Data" :
    - Colonne 1 = Région
    - Colonne 2 = Ville
    - Colonne 3 = Société
    - Colonne 4 = Adresse
    - Colonne 5 = CA 2012
    - Etc.

    Feuilles "Région/Ville" toutes avec structure identique :
    - en cellule B4 je reporte le nom de la Région
    - en cellule E4 je reporte le nom de la Ville
    - en cellule B8 je reporte le nom de la Société
    - en cellule B9 je reporte l'adresse
    - en cellule B12 je reporte le CA 2012

    Je cherche à réaliser une macro qui remplit les cellules renseignées de la feuille "Data" dans chaque feuille "Région/Ville". Ces dernières ressemblent à des "formulaires", les cellules à remplir étant réparties entre B4 et Z98.

    Je ne vois pas comment :
    - Indiquer à la macro de reporter ligne par ligne les données DATA dans la bonne feuille REGION/VILLE
    - Quand une feuille est terminée de passer à la suivante jusqu'à la dernière

    Auriez-vous une idée pour m'aider à démarrer ?
    J'ai un fichier exemple disponible si vous le souhaitez (poids 38 Ko)

    Merci d'avance pour vos idées voire vos solutions

    Cordialement
    Lamperti

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    Le code suivant donne un exemple de solution pour faire une copie de <Data> à commencer en ligne 2 vers les feuilles <Region><espace><Ville>.

    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
    Sub CopyDataToRegionVille()
        Dim ws As Worksheet
        With Worksheets("Data")
            For Each cell In Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
                Dim wsName As String
                wsName = cell & " " & cell.Offset(0, 1)
                On Error GoTo WS_DO_NOT_EXIST
                    With Worksheets(wsName)
                        .Range("B4") = cell
                        .Range("E4") = cell.Offset(, 1)
                        .Range("B8") = cell.Offset(, 2)
                        .Range("B9") = cell.Offset(, 3)
                        .Range("B12") = cell.Offset(, 4)
                    End With
                GoTo NEXT_LOOP
    WS_DO_NOT_EXIST:
                Call MsgBox("Feuille " & wsName & " n'existe pas")
    NEXT_LOOP:
            Next cell
        End With
    End Sub
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Par défaut
    Merci BlueMonkey,

    Je viens d'essayer ta macro sur mon fichier exemple et ça fonctionne. Super ! J'ai juste du ajouter Dim cell as Range qui faisait bugger

    Aux dernières nouvelles, le fichier Data que je vais devoir reporter vers 39 feuilles comporterait (je le saurai la semaine prochaine) environ 270 colonnes, soit 270 "Champs" à compléter par onglet, ce qui est incompatible avec Excel 2003. Il n'est pas impossible qu'il me soit fournit en version "Transposée", à savoir une colonne avec les intitulés des cellules et 39 colonnes Région/Ville. Si tel était le cas, que deviendrait le code ?

    Je ne pourrais m'y atteler qu'à partir de lundi mais j'anticipe pour être sur que ce soit faisable.

    Merci encore pour l'intérêt que tu as témoigné pour m'apporter une réponse rapide.

    Cordialement,
    Lamperti

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Citation Envoyé par Lamperti Voir le message
    J'ai juste du ajouter Dim cell as Range qui faisait bugger
    Effectivement, j'avais omis cette déclaration. Mais curieusement chez moi ça ne plantait pas.

    Citation Envoyé par Lamperti Voir le message
    Il n'est pas impossible qu'il me soit fournit en version "Transposée", à savoir une colonne avec les intitulés des cellules et 39 colonnes Région/Ville. Si tel était le cas, que deviendrait le code ?
    Quelque chose comme ce qui suit. Mais s'il travaille avec une version plus recente d'Excel,
    il est possible qu'il t'envoie tout de même un fichier avec trop de colonnes pour XLS2003.
    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
     
    Sub CopyDataToRegionVilleByCol()
        Dim ws As Worksheet
        Dim cell As Range
        With Worksheets("Data")
            For Each cell In .Range(.Cells(1, 2), .Cells(1, .Cells(1, Columns.Count).End(xlToLeft).Column))
                Dim wsName As String
                wsName = cell & " " & cell.Offset(1)
                On Error GoTo WS_DO_NOT_EXIST
                    With Worksheets(wsName)
                        .Range("B4") = cell
                        .Range("E4") = cell.Offset(1)
                        .Range("B8") = cell.Offset(2)
                        .Range("B9") = cell.Offset(3)
                        .Range("B12") = cell.Offset(4)
                    End With
                GoTo NEXT_LOOP
    WS_DO_NOT_EXIST:
                Call MsgBox("Feuille " & wsName & " n'existe pas")
    NEXT_LOOP:
            Next cell
        End With
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Par défaut
    Merci à nouveau,

    Je me suis fais une version transposée de mon fichier exemple et ta 2ème macro fonctionne également à merveille. Champion J'aurai surement mis des jours à trouver les solutions que tu m'as concoctées.

    J'ai hâte de recevoir le 1er fichier "Data" pour pouvoir avancer, parce que pour l'instant je suis dans le flou.

    Je me permet de ne pas mettre la discussion en "Résolu" vu que je pense encore avoir quelques surprises.

    En attendant bonne soirée et bon week-end
    A+

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Merci, Bon weed-end également.
    A+

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/07/2013, 10h32
  2. Macro pour se déplacer sur une feuille excel
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/03/2010, 20h41
  3. Macro transfert de données d'une feuille Excel à une autre
    Par marion2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/11/2009, 14h20

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