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 boucle - copier chaque ligne d'une feuille dans une nouvelle feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    biologiste
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut VBA boucle - copier chaque ligne d'une feuille dans une nouvelle feuille
    Bonjour
    Mon niveau est débutant. C'est pour créer la première boucle en VBA. Et je ne sais vraiment pas par où commencer.
    Mon but :
    Copier chaque ligne de données dans une feuille dans une nouvelle feuille pour lancer un macro déjà écrite pour la mise en forme, appelé MiseEnForme.

    Merci pour votre aide.
    wiz

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour whitewiz,

    C'est assez peu détaillé ^^
    Si c'est juste pour faire une copie de ta feuille et en changer la mise en forme avec ta macro, tu peux te contenter de copier la feuille non ?

    Si oui voilà un code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub CopierFeuilleActive()
        ActiveSheet.Copy After:=ActiveSheet
        Call MiseEnForme
    End Sub

  3. #3
    Membre habitué
    Femme Profil pro
    biologiste
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut
    Sur la feuille "Donnees", chaque ligne contient les informations concernant un individu, sur une centaines de colonnes.
    Je veux copier les données, individu par individu, sur une nouvelle feuille .... pour ensuite mettre en forme et ajouter d'autres informations concernant l'individu.
    C'est la première étape que je souhaite automatiser pour créer les quelques centaines de feuilles de données individuelles.

    Le programme fait ceci

    pour chaque ligne de ma feuille "Donnees" à partir de la ligne 2 (on skippe la ligne d'en-tête) jusqu'à la fin des lignes où il y a des données
    copier la ligne et la coller dans une nouvelle feuille à la ligne 2
    nommer la nouvelle feuille selon le contenu de la cellule B2
    lancer la sub "MiseEnForme" dans cette nouvelle feuille

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    C'est déjà plus clair

    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
    Sub test()
        Application.ScreenUpdating = False
        Dim Donnees As Worksheet, sh As Worksheet, DerniereLigne&, i&
            Set Donnees = ThisWorkbook.Sheets("Donnees")
            DerniereLigne = Donnees.Cells(Rows.Count, 2).End(xlUp).Row
            For i = 2 To DerniereLigne
                Set sh = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))
                    Donnees.Rows(i).Copy
                    sh.Rows(2).Insert Shift:=xlDown
                    sh.Name = sh.[B2]
                    Call Miseenforme
            Next
    fin:
        Set sh = Nothing
        Set Donnees = Nothing
        Application.ScreenUpdating = True
    End Sub

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour, bonjour !

    Mieux vaut éviter une boucle (souvent une usine à gaz !) au profit d'un filtre avancé



    ______________________________________________________________________________________________________
    Je suis Paris, …

  6. #6
    Membre habitué
    Femme Profil pro
    biologiste
    Inscrit en
    Décembre 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : biologiste
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2015
    Messages : 9
    Par défaut
    Merci Antony. ça marche impeccable, à part que la ligne insérée a décalé toute la mise en forme qui était en dessous. Est-ce que l'on peut éviter d'"insérer" pour simplement "coller" dans la ligne 2 ?

    Quant à l'usine à gaz, je la sens bien arriver. Je dispose que d'excel pour faire cette analyse, qui, outre des données que l'on me fournit via le fichier excel, nécessite beaucoup d'annotations supplémentaires. Je vais réfléchir à d'autres façons. Merci Marc pour ce warning.

  7. #7
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour whitewiz,

    Je ne comprends pas le décalage de mise en forme dont tu parles.

    Je ne fais qu'insérer une ligne dans une nouvelle feuille donc pas encore de mise en forme. Si j'ai utilisé .Insert c'est pour copier toute la ligne car je ne sais pas combien de colonnes sont à copier.

    La mise en forme dont tu parles doit donc être celle de ta feuille Donnees.

    En remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Rows(2).Insert Shift:=xlDown
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Rows(2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
    ça doit régler le problème.

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

Discussions similaires

  1. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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