Introduire un paramètre dans RANGE().select

Résolu
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

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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+
    1. 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
      1. Merci beaucoup,
        Mais ça serait range(i&3) dans mon cas et ça ne fonctionne pas, si ?
    2. 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
      1. Ou alors utiliser
        Range ( i & "3")
        pour que ça fonctionne.
      2. Moi quand j'écris
        Range(i + 2 & "2").Select
        il bugue
        tu sais pourquoi ?
      3. 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
      4. 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
      5. 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 :)