Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2012, 16h55   #1
Invité de passage
 
Homme
Enseignant
Inscription : 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
Points : 0
Points : 0
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
hitmanindo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h02   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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 ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h16   #3
Invité de passage
 
Homme
Enseignant
Inscription : 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
Points : 0
Points : 0
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
Type de fichier : jpg macro.JPG (87,1 Ko, 9 affichages)
hitmanindo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h33   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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 ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h40   #5
Invité de passage
 
Homme
Enseignant
Inscription : 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
Points : 0
Points : 0
Non, les cellules ne sont pas fusionnées sur chaque colonne; il y a des données qui occupent les différentes lignes.
hitmanindo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 17h53   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Voici un bout de code à adapter légèrement :
Code :
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.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h37   #7
Invité de passage
 
Homme
Enseignant
Inscription : 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
Points : 0
Points : 0
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é...
hitmanindo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2012, 18h48   #8
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Si tu as un classeur "Pierre.xls" par exemple, où vont les infos de l'onglet1, de l'onglet2, ... de la feuille source ? Dans des onglets différentes ? A la suite dans le même onglet ?

Si tu comprends comment fonctionne le fait d'assigner un onglet à un objet - comme je le faisais dans le code proposé - ça ne devrait pas être trop compliqué.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 11h26   #9
Invité de passage
 
Homme
Enseignant
Inscription : 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
Points : 0
Points : 0
Par défaut re

Je voudrais mettre les données pour chaque Prénom prises dans chaque onglet; dans un fichier (ayant le nom du prénom) et avec à la suite dans le meme onglet toutes les données.
hitmanindo44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h59.


 
 
 
 
Partenaires

Hébergement Web