Simple macro copier/coller ?!! si seulement

JeremyGe Messages postés 1 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai une extract comme suit:

Requete 1 - Client 1 - Adresse 1 - Constructeur 1 - Produit 1 - C2 - P2 - C3 - P3   
Requete 2 - Client 2 - Adresse 2 - Constructeur 4 - Produit 4 - C5 - P5 - C6 - P6   
...


Je souhaite réaliser un modèle comme celui ci-dessous:

Requete 1 - Client 1 - Adresse 1 - Constructeur 1 - Produit 1   
Requete 1 - Client 1 - Adresse 1 - Constructeur 2 - Produit 2   
Requete 1 - Client 1 - Adresse 1 - Constructeur 3 - Produit 3   
Requete 2 - Client 2 - Adresse 2 - Constructeur 4 - Produit 4   
Requete 2 - Client 2 - Adresse 2 - Constructeur 5 - Produit 5   
Requete 2 - Client 2 - Adresse 2 - Constructeur 6 - Produit 6   
....


Pour résumer, je souhaite avoir un client et un produit par ligne afin de pouvoir faire un tableau croisé dynamique. Il ne s'agit donc que d'un copier/coller à la fin du tableau suivant condition et enfin un tri final par Requete.

Condition:

If C2 <> "--" Then copier R1-Cl1-A1 coller en colonne A à la suite du tableau et copier C2-P2 coller en colonne U à la suite du tableau.


Je souhaiterais donc créer une boucle où cela se réalise jusqu'à la dernière ligne du tableau de base.

Voilà le travail effectué jusque là:

Sub Test2()   

Range("AA2").Select 'on commence par aller chercher le Constructeur 2   
If ActiveCell.Value <> "--" Then 'on applique la condition   
    Range("AA2:AF2").Select 'On sélectionne Constructeur 2, Produit 2   
        Selection.Copy 'On copie   
        Range("U65536").End(xlUp).Offset(2, 0).Select 'On va chercher la dernière ligne du tableau en colonne U, on descends   
'de 2 lignes pour laisser une ligne vide (pour pouvoir appliquer la boucle par la suite) et on va en colonne U   
        ActiveSheet.Paste 'on colle. VOILA LA PARTIE C2-P2 COLLEE   
    Range("A2:T2").Select 'on va chercher R1-C1-A1   
        Selection.Copy 'on copie   
        Range("A65536").End(xlUp).Offset(2, 0).Select 'On va chercher la dernière ligne du tableau en colonne A, on descends   
'de 2 lignes pour laisser une ligne vide (pour pouvoir appliquer la boucle par la suite) et on va en colonne U   
        ActiveSheet.Paste 'on colle. VOILA LA LIGNE VOULUE, OBTENUE !!   
End If   
       
'on est maintenant sur la partie C3-P3, on réalise les mêmes actions sauf qu'on colle à la suite de la ligne créée ci-dessus et   
'on peut donc lancer la boucle car tout se mettra à la suite   
Do   
Range("AG2").Select   
If ActiveCell.Value <> "--" Then   
    Range("AG2:AL2").Select   
        Selection.Copy   
        Range("U65536").End(xlUp).Offset(1, 0).Select   
        ActiveSheet.Paste   
    Range("A2:T2").Select   
        Selection.Copy   
        Range("A65536").End(xlUp).Offset(1, 0).Select   
        ActiveSheet.Paste   
End If   

'While: j'aimerais mettre jusqu'à ce que la cellule A(x)=0   


End Sub


La macro n'est pas très lisible sur le site, je vous conseille donc de la copier dans le VBA editor. Un conseil pour les tests, créer une feuille Excel avec des données de la colonne A à la colonne AL

Voici l'extract: http://www.cijoint.fr/cjlink.php?file=cj201009/cijRHvrEqZ.xls

Merci d'avance!!!
A voir également:

1 réponse

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

pour que qqn t'apporte + facilement une proposition, Mets plutôt un extrait de ton classeur, sans données confidentielles sur
http://cijoint.fr/
ckasseur enregistré au format XL97-2003 (si tu as 2007)
et copie le lien proposé dans ton message
0