Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
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 23/09/2011, 09h38   #1
Invité de passage
 
Homme Fabrice
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Fabrice
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 1
Points : 1
Par défaut Collage de plusieurs colonnes

Bonjour à tous,

Je suis nouveau dans la réalisation de macros et j'ai un petit peu de mal à en faire une qui est peut-être toute simple.
Voilà mon problème:
Je dois copier plusieurs colonnes d'un classeur Excel vers un autre. Le problème c'est que le nombre de ces colonnes peut varier en fonction d'un nombre.
Par exemple, si mon nombre est 3, je copie les 3 colonnes D à F sur 10 lignes (longueur fixe), puis les 3 colonnes G à I toujours sur 10 lignes, puis les 3 colonnes M à O, etc... J'ai plusieurs groupes de colonnes comme ça.
Sauf que si mon nombre devient 2, les colonnes que je dois copier se décalent. Premier groupe: D;E, deuxième groupe: F;G, Troisième groupe: J;K

J'arrive à copier ces colonnes pour une valeur fixe (3 par exemple) mais je ne sais pas comment faire pour que cela marche toujours quand le nombre de colonnes varie.

Voilà le code que j'utilise pour un groupe de colonne:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Windows("Résultats ACV.xls").Activate
    Sheets("Résultats du Projet").Select
    Range("D6:F22").Select
    Selection.Copy
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Exploitation des résultats ACV.xlsm").Activate
    Sheets("Résultats Projet").Select
    Range("D10").Select
    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Merci de votre aide.
Sword47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h49   #2
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 395
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 395
Points : 419
Points : 419
Salut Sword47,

J'ai du mal à saisir l'intérêt car comme expliqué (il est fort possible que j'ai mal saisi la finalité), quel que soit le pas choisi, les même colonnes de ton fichier de départ se trouveront les unes à la suite des autres, avec la même structure dans ton fichier d'arrivée.
Peux-tu m'expliquer STP ce que j'ai mal compris ?
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 11h04   #3
Invité de passage
 
Homme Fabrice
Inscription : septembre 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Fabrice
Localisation : France

Informations forums :
Inscription : septembre 2011
Messages : 3
Points : 1
Points : 1
Salut,

L'intérêt c'est qu'une fois copiées, les lignes de ces colonnes seront réarrangées et remises en forme pour qu'elles soient plus facilement exploitables.
En effet elles se retrouveront à la suite des autres mais dans le fichier de départ elles sont intercalées avec des colonnes qui ne m'intéressent pas. Je veux donc faire le tri dans toutes ces colonnes.

Merci
Sword47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 13h08   #4
Invité de passage
 
Inscription : mai 2010
Messages : 5
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 5
Points : 3
Points : 3
Malgré un doute partagé sur l'intérêt.. Ça devrait ressembler à ça pour faire la même chose que ton enregistreur de macro te donne, sauf qu'à partir de ça, tu peux continuer d'incrémenter ou boucler... :

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
 
'Paramètres de tes tableaux à copier/coller
Dim iNbLign As Integer
Dim iNbCol As Integer
iNbLign = 10
iNbCol = 3
 
'Sélection de la première cellule du tableau à copier
Dim oRange As Range
Set oRange = Workbooks("Résultats ACV.xls").Worksheets("Résultats du Projet").Range("D6")
 
'Sélection de la première cellule du tableau où coller
Dim oRangeDest As Range
Set oRangeDest = Workbooks("Exploitation des résultats ACV.xlsm").Worksheets("Résultats Projet").Range("D10")
 
'Sélection du tableau à copier + copier
Set oRange = oRange.Resize(iNbLign, iNbCol)
oRange.Copy
 
'Sélection du tableau où coller + coller valeurs
Set oRangeDest = oRangeDest.Resize(iNbLign, iNbCol)
oRangeDest.PasteSpecial xlPasteValues
 
'Déplacer le tableau à copier + copier
Set oRange = oRange.Offset(0, iNbCol)
oRange.Copy
 
'Déplacer le tableau où coller + coller
Set oRangeDest = oRangeDest.Offset(??, ??)
oRangeDest.PasteSpecial xlPasteValues
 
'...
Abkart 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 20h23.


 
 
 
 
Partenaires

Hébergement Web