Sélection d'une colonne par variable locale

Bonjour,

Question simple, a priori :

Dans une macro Excel, je crée une variable locale que je nomme Ccli, et qui prendra une valeur numérique au cours du programme.
Je veux ensuite pouvoir sélectionner la colonne n° Ccli. Comment puis-je faire ? Il semble que la fonction Columns(4).Select ne fonctionne qu'avec des paramètres (ici "4") renseignés en dur dans le programme.

Merci d'avance.

6 réponses

  1. Contributeur
    bonjour
    columns(Ccli).select
    0
    1. C'est ce que j'ai fait, mais ça ne fonctionne pas.
      Peut-être que j'ai mal déclaré la variable Ccli : je me suis contenté d'écrire "Ccli = ", suivi de la formule qui le définit.
      0
      1. Contributeur
        j'vois le pb!

        par exemple, tu sélectionne une cellule, mettons ligne 4 et la ùacro sélectionne la colonne 4

        sub tamacro()
        Dim ccli As Byte 'xl<2007
        ccli = ActiveCell.Row 'histoire de faire qqchose
        Columns(ccli).Select
        end sub
        0
        1. Merci pour ces éléments. Je m'aperçois qu'effectivement, ces lignes de code fonctionnent correctement.
          Du coup, je comprends aussi que mon problème vient d'ailleurs : ma variable Ccli prend la valeur renvoyée par une fonction "Inputbox".
          J'ai donc Ccli qui est de type String, alors que dans la formule Columns(Ccli).Select, il faudrait que ce soit une variable de type Integer.

          Est-il possible que la fonction Inputbox renvoie la valeur saisie par l'utilisateur sous forme d'entier ?
          Sinon, existe-t-il une autre fonction qui le ferait ?

          Merci d'avance
          0
          1. Contributeur
            Bonjour

            tu pourrais bidouiller ceci:
            ccli = ccli & ":" & ccli
            Columns(ccli).Select
            0
            1. Merci beaucoup.

              J'ai commencé par m'inspirer de cette idée. Ca fonctionne très bien pour la fonction Columns.
              Mais j'avais le même problème avec Cells.Value, et là je ne peux pas mettre des chaînes de caractère : il faut des entiers.
              J'ai remplacé les Cells par des Range, pour utiliser des variables String, mais le résultat n'était pas celui attendu.

              Finalement, j'ai trouvé une solution intéressante dans l'aide VB : le signe %, situé après le nom de la variable, signifie que c'est un entier.
              Du coup, voici ce que j'ai fait :
              * Je ne déclare pas la variable Ccli (en la déclarant en tant que "Integer" ou en tant que "String" j'ai un message d'erreur)
              * Ccli% = Inputbox(...)
              Je peux alors utiliser Ccli comme un entier, et écrire Columns(Ccli).Select

              Merci beaucoup
              0