De la bonne utilisation du Range

Newbe

XLDnaute Nouveau
Rebonjour à tous,
Je sais je post beaucoup mais je débute, j'ai un taf monstrueux (à mes yeux) et je m'en sors vraiment pas...

Alors voilà je cherche ici à tester un bout de mon code et ça marche pas :(
Le but ici est simplement de verifier le bon fonctionnement du "copier coller à la suite du tableau".

Je cherche à créer un Range comportant différentes colonnes (c'est là que ça bloque) et à le coller en dessous d'un tableau préexistant. J'ai donc essayer de récupérer 3 colonnes et de les coller en dessous d'elles mêmes mais visiblement j'ai un soucis dans mon code...

Sub Test()

Dim colaa As Range, colbb As Range, colcc As Range
Dim muti As Range


colaa = ActiveSheet.Cells(1, 1).Column
colbb = ActiveSheet.Cells(1, 2).Column
colcc = ActiveSheet.Cells(1, 5).Column

Multi = Union(colaa, colbb, colcc)

Multi.Select
Selection.Copy
Range("a65536").Select
Selection.End(x1Up).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste


End Sub
 

Ubot303

XLDnaute Occasionnel
Re : De la bonne utilisation du Range

Salut,

colaa = ActiveSheet.Cells(1, 1).Column
colbb = ActiveSheet.Cells(1, 2).Column
colcc = ActiveSheet.Cells(1, 5).Column

Chercherais-tu à copier les colonnes 1 2 et 5?
Dans ce cas la, pourquoi ne pas passer par un

Range("A:A,B:B,E:E").Select

Edit : si tu ne connais pas l'enregistreur de macro, celui-ci donne:

Range("A:A,B:B,E:E").Select
Range("E1").Activate
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste

pour un copier coller de la colonne 1,2,5 de la feuil1 vers les colonnes 1,2,3 de la feuil2
 
Dernière édition:

Newbe

XLDnaute Nouveau
Re : De la bonne utilisation du Range

j'ai bien essayé
Range("colaa:colaa,colbb:colbb,colcc:colcc").Select

Où colaa et colbb étaient des string dans ce test là mais il me met une erreur du genre la methode Range à échoué.
Le problème c'est que les colonnes ne sont pas fixe d'où les variables colaa et colbb....
 

Hervé

XLDnaute Barbatruc
Re : De la bonne utilisation du Range

bonjour

les variables objets (range, sheets,...) doivent etre initialisées par l'instruction set.

si tu veux sélectionner toute une colonne il existe la propriété columns pour ceci :

Code:
dim colaa as range
 
set colaa=columns(1)  'initialisation de toute la colonne A
 
colaa.select 'selection de la colonne A.

par contre j'ai pas trop compris ce que tu voulais faire.

salut
 

Ubot303

XLDnaute Occasionnel
Re : De la bonne utilisation du Range

J'ai rajouté des boites de dialogue pour m'adapter à ton cas :

A = InputBox("1ere colonne")
B = InputBox("2eme colonne")
C = InputBox("3ème colonne")

Union(Columns(CInt(A)), Columns(CInt(B)), Columns(CInt(C))).Select

Edit : Hervé j'ai viré ce bout de code qui ne fonctionnait pas de toutes facons car range +3 param
mais bien vu ;)
 
Dernière édition:

Hervé

XLDnaute Barbatruc
Re : De la bonne utilisation du Range

re

Ubot, pour rigoler, sans gestion d'erreur :

Code:
Dim A As Range
Dim B As Range
Dim c As Range
Dim multi As Range
 
Set A = Columns(Application.InputBox("1ere colonne", Type:=1))
Set B = Columns(Application.InputBox("2ème colonne", Type:=1))
Set c = Columns(Application.InputBox("3ème colonne", Type:=1))
Set multi = Union(A, B, c)
multi.Select

a plus

PS: ca fait un moment que j'avais pas fait n'importe quoi sur le forum, ca me manquait :D
 

Hervé

XLDnaute Barbatruc
Re : De la bonne utilisation du Range

re

un dernier pour la route, à l'aide d'une boucle (toujours sans gestion d'erreur, flemme de me taper un error goto :D)

Code:
Dim multi As Range
Dim i As Byte
 
For i = 1 To 3
    If multi Is Nothing Then
        Set multi = Columns(Application.InputBox("Colonne " & i, Type:=1))
    Else
       Set multi = Union(multi, Columns(Application.InputBox("Colonne " & i, Type:=1)))
    End If
Next i
 
multi.Select

bye
 

Ubot303

XLDnaute Occasionnel
Re : De la bonne utilisation du Range

J'ai mis 3 inputbox car je ne sais pas ou l'auteur prend ses données...

C'est une manière de simuler le problème chez moi, je me doute bien que l'auteur du post va adapter la solution...

C'est pour ca que j'avais précisé
J'ai rajouté des boites de dialogue pour m'adapter à ton cas
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 883
Membres
103 981
dernier inscrit
vinsalcatraz