Superposition de deux colones dans Excel
korni184
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis entrain de réaliser une macro simple pour comprendre le fonctionnement de superposition de colonnes:
J'ai un tableau à 4 colonnes (numéro,objet et numéro,objet) se sont effectivement deux colonnes qui doivent se suivre,
j'ai donc commencer ma macro comme ceci:
---------------------------------------------------------------------------------------------
Sub Macro1()
'
' Superposition de deux colonnes
' Macro recorded 30.03.2010 by fd151
'
Range ("A2).Select
Do While ActiveCell.offset(0,0).value <>""
Activecell.offset(1,0).select
Loop
End Sub
---------------------------------------------------------------------------------------------
j'ai donc de A2 à A17 des intitulés
de B2 à B17 des montants
et de C2 à C16 la 'même chose, et idem pour d2 à d17
J'aimerai savoir si c'est possible, qu'après qu'il est fait sa boucle, donc lorsqu'il s'arrête sur la ligne en A18 (la cellule vide) qu'il puisse venir copier la suite des colonnes qui se trouvent à partir de C2 ET D2 (sans prendre les intitulés car c'est les même) et donc obtenir deux colonnes uniques:
Merci d'avance
je suis entrain de réaliser une macro simple pour comprendre le fonctionnement de superposition de colonnes:
J'ai un tableau à 4 colonnes (numéro,objet et numéro,objet) se sont effectivement deux colonnes qui doivent se suivre,
j'ai donc commencer ma macro comme ceci:
---------------------------------------------------------------------------------------------
Sub Macro1()
'
' Superposition de deux colonnes
' Macro recorded 30.03.2010 by fd151
'
Range ("A2).Select
Do While ActiveCell.offset(0,0).value <>""
Activecell.offset(1,0).select
Loop
End Sub
---------------------------------------------------------------------------------------------
j'ai donc de A2 à A17 des intitulés
de B2 à B17 des montants
et de C2 à C16 la 'même chose, et idem pour d2 à d17
J'aimerai savoir si c'est possible, qu'après qu'il est fait sa boucle, donc lorsqu'il s'arrête sur la ligne en A18 (la cellule vide) qu'il puisse venir copier la suite des colonnes qui se trouvent à partir de C2 ET D2 (sans prendre les intitulés car c'est les même) et donc obtenir deux colonnes uniques:
Merci d'avance
A voir également:
- Superposition de deux colones dans Excel
- Déplacer colonne excel - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment faire deux colonnes indépendantes dans word - Guide
- Liste déroulante excel - Guide
- Trier colonne excel - Guide
1 réponse
Salut,
Avant toutes choses, en VBA il convient d'éviter les ".Select". La macro s'en trouve alourdit et très ralentie. Cela ne se voit pas dans ton cas, car tu ne boucle que sur 16 lignes, mais n'oublies pas qu'excel (<2007) comprends 65536 lignes...
Si tu tiens à sélectionner la première ligne ou A est vide :
Dans ton cas, tu souhaites, si je ne m'abuse, coller après A17 le contenu de la plage ("C2:C17"). Si cette plage (C2:C17) est fixe alors :
(range source.copy vers range destination)
Maintenant si les plages en colonne A & C sont variables, il faut en connaitre les "bornes"
1ère ligne : facile, il s'agit de A2 ou de C2.
dernière ligne remplie :
Pour copier la plage C2:Cfin :
pour le copier/coller "derrière" la dernière cellule non vide de la colonne A :
J'espère ne pas avoir été trop confus...
Avant toutes choses, en VBA il convient d'éviter les ".Select". La macro s'en trouve alourdit et très ralentie. Cela ne se voit pas dans ton cas, car tu ne boucle que sur 16 lignes, mais n'oublies pas qu'excel (<2007) comprends 65536 lignes...
Si tu tiens à sélectionner la première ligne ou A est vide :
Range("A65536").End(xlUp).Offset(1, 0).Select
Dans ton cas, tu souhaites, si je ne m'abuse, coller après A17 le contenu de la plage ("C2:C17"). Si cette plage (C2:C17) est fixe alors :
Range("C2:C17").Copy Range("A18") 'l'espace entre copy et Range lui indique que A18 est la destination ou on doit "coller"
(range source.copy vers range destination)
Maintenant si les plages en colonne A & C sont variables, il faut en connaitre les "bornes"
1ère ligne : facile, il s'agit de A2 ou de C2.
dernière ligne remplie :
Range("A65536").End(xlUp).Row et Range("C65536").End(xlUp).Row
Pour copier la plage C2:Cfin :
'déclaration de la variable dans laquelle nous allons stocker le numéro de la dernière ligne
Dim derniereligne As Integer
derniereligne = Range("C65536").End(xlUp).Row
'copie de la plage :
Range("C2:C" & derniereligne).Copy
pour le copier/coller "derrière" la dernière cellule non vide de la colonne A :
Dim derniereligne As Integer
derniereligne = Range("C65536").End(xlUp).Row
'copie de la plage et colle derrière Afin:
Range("C2:C" & derniereligne).Copy Range("A65536").End(xlUp).Offset(1, 0)
'ici le Offset(1, 0) "descends" d'une ligne, ce qui permet de "sélectionner" la première ligne vide au lieu de la dernière remplie...
J'espère ne pas avoir été trop confus...
J'ai exactement la même problématique que korni 184, et en suivant ton script, je n'arrive pas à mes fins. Si je te passe mon script, as-tu un moyen de le corriger?
on peux essayer... Envoie!