Macro Excel

Bonjour,

Je recherche l'instruction VBA qui permet de sélectionner toute une colonne d'une feuille excel.

Merci pour votre aide.

Cdt
Cathy

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. En fait, je me suis peut etre pas tres bien expliqué.

    J'ai besoin de faire une boucle qui va lire , par exemple toute la colonne B d'une feuille et qui va regarder pour chaque ligne de la colonne B la valeur qu'elle contient pour la comparer à une valeur quelconque. Et c'est cette boucle qui m'intérèsse.
    Merci
    1. honnetement je n'y connais pas grand chose en VBA.

      Mais bon on va essayer
      on pourait imaginer un truc comme ça:

      la collone à tester serait la B et la case de reference A1
      pour les syntaxes s'aider en appuyant sur F1

      la ligne à tester serait appelée "Ligne"
      la variable testing est la valeur de la case BX à tester
      et TestVide sert juste à finir de tester quand il n'y a plus de données

      rem definition des variables

      TestVide = 0
      Ligne = 1
      Testing = 0

      while TestVide == 0

      Testing = recuperation de la valeur de la cellule ("B"+Ligne)
      If Testing == 0
      then
      TestVide = 1
      else
      comparer la cellule "B"+Ligne avec "$A$1"
      Ligne = Ligne +1
      endif

      endwhile

      Comme j'y connais pas grand chose en VBA je ne sais pas trop bien comment récuperer les valeurs des cellules mais je pense qu'un schéma comme celui là devrait peu près fonctionner..
      Je suis pas sur que ca serve mais bon...
      1. Salut, alors voilà un exemple de script pour te déplacer dans la colonne B :

        -----------------------------------------------------
        ' Définition variables
        Dim valeur_B As string
        Dim i, nb_lignes As Integer
        Dim Cel As Range

        ' Positionnement à la première ligne de B
        Set Cel = Range("B1")
        ' Récupération de la dernière ligne
        nb_lignes = Cel.End(xlDown).Row

        For i = 1 to nb_lignes

        valeur_B = Cel.Offset(i,0).value

        ' Faire tests que tu veux sur valeur_B
        ' if valeur_B = .... then
        '
        'end if

        ' Repositionnement à la première ligne B
        Set Cel = Range("B1")

        next

        ---------------------------------------------------------------

        La méthode importante pour te déplacer à partir d'un point précis ici est Offset(nb_lignes, nb_colonnes) .

        Voili voilou, il y a sans doute moyen de faire plus simple ou différemment. J'espère que ça t'aidera un peu quand même...

        Tchussy

        Mattiou
        1. Merci ca marche super bien. Je debute en VBA et j'ai vraiment bcp de mal, merci de m'avoir aider.

          J'en profite pour te demander un dernier renseignement :

          quand la cellule de colonne B contient, une valeur déterminée, j'aimerais que la cellule de la colonne C (meme ligne) face une action quelconque. Quel est le code a utilisé pour lui dire de changer de colonne mais de garder la même ligne?

          Merci
      2. our te positionner sur la colonne C de la même ligne, là aussi tu peux utiliser la fonction Offset. Tu peux modifier le code de la manière suivante (ajouts en gras):

        -----------------------------------------------------
        ' Définition variables
        Dim valeur_B As string
        Dim i, nb_lignes As Integer
        Dim Cel, Cel2 As Range

        ' Positionnement à la première ligne de B
        Set Cel = Range("B1")
        ' Récupération de la dernière ligne
        nb_lignes = Cel.End(xlDown).Row

        For i = 1 to nb_lignes

        valeur_B = Cel.Offset(i,0).value
        ' Positonnement sur la colonne C :
        Set Cel2 = Cel.Offset(0,1)

        ' Faire tests que tu veux sur valeur_B
        'if valeur_B = .... then
        '
        'end if

        ' Repositionnement à la première ligne B
        Set Cel = Range("B1")

        next

        ---------------------------------------------------------------

        Maintenant tu peux lancer l'action que tu veux sur ta cellule Cel2...
        Voili voilou, si t'as d'autres questions, n'hésites pas ...

        Mattiou
        1. Bonsoir,
          Je suis débutant en macro excel.
          Voici mon pb.:
          Je n'ai pas pu réaliser la macro précédente car refus de cel.end(xlDown).Row
          En fait j'ai des valeurs numériques en A1:A10 (parfois cel. vides)et je dois inclure en B1:B10 la date du jour si cel (A1:A10)non vides.
          Les dates doivent être figées et non pas se modifier à chaque ouverture du worksheet (demain, dans 2 jours,....)
          Merci de votre aide, je réalise un travail pour une oeuvre sociale.