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 :

Existe t il un moyen?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Bonjour,
    Je débute en VBA et aimerais faire une macro qui me paraissait simple, mais j'ai un problème.

    Je veux copier coller les lignes suivantes dans un autre classeur

    Colonne A
    Pierre (contient 3 lignes)
    Paul ( 2 lignes)
    Jacques (4 lignes)

    Cependant si Pierre Paul et Jacques ne changent pas, ils ne comptent pas toujours autant de lignes.
    Donc je ne peux pas, pour sélectionner Pierre, prendre ligne 1,2,3 ; Paul ligne 4,5 etc.. car cela va changer.

    Je me demandais si il était possible de créer une macro qui se placerait directement sur Pierre, Paul et Jacques et copierait toutes leurs lignes à chaque fois.

    Merci par avance pour votre aide

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tout d'abord un conseil, évite de répondre directement à ton propre message, je pense que comme moi, beaucoup de personnes regarde s'il peuvent aider sur les message où il n'y a aucune réponse...

    Sinon, oui c'est possible. Quelques précisions, on aura toujours Pierre suivi de n1 lignes qui ne contiennent pas Paul, puis Paul suivi de n2 lignes qui ne contiennent pas Jacques, puis Jacques suivi par n3 lignes et ensuite une ligne vide ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Je crois que je n'ai pas été clair
    Avec cette PJ, cela le sera plus.
    Je veux pouvoir sélectionner dans ma macro toutes les lignes pour P, PA, et JA; sachant que le nombre de ligne concernées va être amené à changer
    Images attachées Images attachées  

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tes cellules seront toujours fusionnées ou il y a aussi des données qui occupent les différentes lignes ? Et tu veux copier toute la ligne ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    Non, les cellules ne sont pas fusionnées sur chaque colonne; il y a des données qui occupent les différentes lignes.

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Voici un bout de code à adapter légèrement :
    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
    44
    45
    Option Explicit
     
    Public Sub test()
        Dim wbSource As Workbook
        Dim wbCible As Workbook
        Dim wsSource As Worksheet
        Dim wsCible As Worksheet
        Dim iZone, nbZone As Integer
        Dim premiereLigne, nbLignes As Integer
        Dim premiereLigneCopie As Integer
        Dim colRef As Integer
        Dim rg As Range
     
        Set wbSource = ThisWorkbook
        Set wbCible = ThisWorkbook 'a adapter
     
        Set wsSource = wbSource.Worksheets("Feuil2") 'a adapter
        Set wsCible = wbCible.Worksheets("Feuil3") 'a adapter
     
        nbZone = 3 'Pour le moment, à augmenter si on ajoute des prénoms
        premiereLigne = 11 'a adapter : le premiere ligne de données, ici pierre
        colRef = 2 'a adapter : la colonne qui contient pierre, paul, jacques
        premiereLigneCopie = 1 'a adapter : la premiereLigne sur laquelle on copie dans la feuille cible
     
        iZone = 1
     
        Do While iZone <= nbZone
            Set rg = wsSource.Cells(premiereLigne, colRef)
     
            If rg.MergeCells Then 'Si c'est une cellule mergée
                nbLignes = rg.MergeArea.Rows.Count 'On récupère son nombre de lignes
            Else 'Sinon il n'y a qu'une ligne
                nbLignes = 1
            End If
     
            'On effectue la copie
            wsSource.Range(rg, rg.Offset(nbLignes - 1, 0)).EntireRow.Copy
            wsCible.Paste wsCible.Cells(premiereLigneCopie, 1)
     
            'On passe à la zone suivante
            premiereLigne = premiereLigne + nbLignes
            premiereLigneCopie = premiereLigneCopie + nbLignes
            iZone = iZone + 1
        Loop
    End Sub
    J'ai essayé de le commenter, mais fais-moi signe si tu as besoin d'explications supplémentaires.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Par défaut
    merci pour ce code, je commence à comprendre
    Je suis bloqué pour aller à l'étape suivante,
    Mon fichier d'origine comprend différents onglets, dans chaque onglet on a le meme Prénom, la même présentation, avec des chiffres différents. Je dois récupérer les infos de chaque onglet et les déverser dans un classeur pour chaque prénom.
    Et je suis complétement paumé...

Discussions similaires

  1. existe t'il un moyen sous .net pour faire l'abstraction des SGBD
    Par Sfaxiano dans le forum Accès aux données
    Réponses: 2
    Dernier message: 30/07/2009, 19h07
  2. Réponses: 2
    Dernier message: 05/12/2007, 13h48
  3. Réponses: 3
    Dernier message: 06/07/2006, 10h47
  4. Réponses: 3
    Dernier message: 05/07/2006, 12h59
  5. Réponses: 1
    Dernier message: 15/05/2006, 18h36

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