Introduire un paramètre dans RANGE().select

Résolu
krankinette -  
Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dois écrire une macro qui vient chercher une colonne dans un onglet 1 puis qui la colle dans un onglet 2 où s'effectue un calcul dont le résultat apparait onglet 3. Je dois faire ce calcul autant de fois qu'il y a de colonnes dans le premier onglet (environ 180) et lister tous les résultats dans un onglet 4.

J'ai enregistré cette macro pour la première colonne :

Sheets("Colonnes").Select
Range("C3").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Calculs").Select
Range("P10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Résultats").Select
Range("C20").Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Présentation résultats").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False


Je voudrais l'automatiser pour me faire les 180 colonnes mais je n'arrive pas à introduire de paramètre dans la fonction RANGE()

Est ce que quelqu'un q une idée ?

Merci
A voir également:

3 réponses

Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   183
 
Salut,
Au lieu de
Range("C3").Select 
tu peux écrire
Range("C3:FZ3").select
FZ c'est la 180ème colonne à partir de C, donc il faut adapter en fonction du nombre exact de colonnes que tu veux sélectionner, et à répéter à chaque fois que tu veux sélectionner plusieurs colonnes.

Si j'ai mal compris n'hésite pas à reposter !

A+
0
Paf
 
bonjour
pour introduire un paramètre on peut écrire :

range("A" & i) i étant un indice que tu peux faire évoluer.

par exemple :
For i= 3 to 180
    Range("C" & i).Select 
    ...
    ...
Next i

à la place de Range, tu peux utiliser Cells( i , j) ou i est N° de ligne et j N° de colonne

A+ si besoin
0
krankinette
 
Merci beaucoup,
Mais ça serait range(i&3) dans mon cas et ça ne fonctionne pas, si ?
0
Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   183
 
Le premier exemple de Paf te permet de passer sur 180 lignes, et non sur 180 colonnes, il faut utiliser son deuxième exemple :

Dim colonne as Integer

For colonne = 1 to 180
Cells(3, colonne).Select
...
...
Next
0
Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   183
 
Ou alors utiliser
Range ( i & "3")
pour que ça fonctionne.
0
krankinette
 
Moi quand j'écris
Range(i + 2 & "2").Select
il bugue
tu sais pourquoi ?
0
Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   183
 
Un exemple de Range, c'est
Range("A1")
, si tu essayes de lui donner une variable numérique
i+2
à la place du A, il aime pas trop...
C'est pour ça qu'il faut bien utiliser
For colonne = 1 to 180
Cells(3, colonne).Select
...
...
Next
Pour passer sur toutes les colonnes sous forme de nombre et non de lettres
0
krankinette
 
Je crois que ça marche (ça tourne là et ça prend un temps de fou mais au moins ça s'est lancé !)
Merci beaucoup pour votre aide, vous avez été super réactifs !
Bonne fin d'aprem
0
Morgothal Messages postés 1236 Date d'inscription   Statut Membre Dernière intervention   183
 
Si ça tourne trop longtemps, Echap ou Ctrl+Pause pour arrêter l'exécution et débugger, mais tant mieux si ça marche !
Et ne pas oublier de mettre le topic en résolu :)
0