Problème de sélection

OngNoi Messages postés 11 Statut Membre -  
OngNoi Messages postés 11 Statut Membre -
Je débute en macro Excel et je ne sais pas comment écrire le code pour faire les
choses suivantes:
1) A partir de la cellule active, descendre le curseur de 2 cellules en dessous.
2) A partir de la cellule active, amener le curseur à la colonne A de la même
ligne (je ne connais pas les références de la cellule active) ?
3) A partir d'une position donnée dans une colonne de données, comment écrire le
code pour sélectionner la première cellule vide ?

Merci
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Cub Messages postés 13 Statut Membre 3
     
    Voici une petite macro que j'ai écrite pour le boulot qui contient les exemples que tu souhaites :

    Sub Macro1()
    ' le 22/06/2007 par Cub
    ' OriCol et OriLig : Ligne et colonne de la case de la matrice en heut à gauche
    ' Fonctionne si case vide à droite de la matrice et case vide en bas

    OriCol = 3
    OriLig = 2

    pos_ligne = OriLig
    pos_col = OriCol

    celluleCourante = Cells(OriLig, OriCol)
    Do While celluleCourante <> ""
    pos_ligne = pos_ligne + 1
    nbligne = nbligne + 1
    celluleCourante = Cells(pos_ligne, OriCol)
    Loop

    celluleCourante = Cells(OriLig, OriCol)
    Do While celluleCourante <> ""
    pos_col = pos_col + 1
    nbcol = nbcol + 1
    celluleCourante = Cells(OriLig, pos_col)
    Loop

    MsgBox ("matrice de " & nbligne & " lignes et " & nbcol & "colonnes")
    '
    End Sub
    0
    1. OngNoi Messages postés 11 Statut Membre 3
       
      Merci Cub de ta prompte réponse. Ta macro est intéressante et j'ai bien noté le code pour m'en servir pour un autre projet. En fait , si j'avais besoin de sélectionner la matrice, j'aurais simplement sélectionné la plage de la cellule en haut à gauche jusqu'à la dernière cellule en bas à droite en une seule instruction:
      Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

      Dans mon projet je dois copier puis coller 2 plages de données de longueur variable, l'une à la suite de l'autre. Seule la cellule en haut à gauche du premier collage est connue: A42. Avec l'instruction suivante je sais sélectionner la dernière cellule en bas à droite du premier collage.
      ActiveCell.SpecialCells(xlLastCell).Select

      Pour coller la 2è plage de données, je veux sélectionner la cellule qui se trouve par exemple dans la colonne B à 3 lignes au dessous de celle de xlLastCell. Existe-t-il un code VB tout simple pour faire ce Select ?

      Merci
      0
  2. Utilisateur anonyme
     
    Bonjour,

    1) A partir de la cellule active, descendre le curseur de 2 cellules en dessous.

    ActiveCell.Offset(2, 0).Select

    2) A partir de la cellule active, amener le curseur à la colonne A de la même
    ligne (je ne connais pas les références de la cellule active) ?

    Range("A" & ActiveCell.Offset(0, 0).Row).Select

    3) A partir d'une position donnée dans une colonne de données, comment écrire le
    code pour sélectionner la première cellule vide ?

    Dim Position As Long

    Position = ActiveCell.Offset(0, 0).End(xlDown).Row
    ActiveCell.Offset(Position, 0).Select

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

    Lupin
    0
    1. OngNoi Messages postés 11 Statut Membre 3
       
      Bonjour Lupin,

      Tu as répondu exactement à mes questions.
      MERCI BEAUCOUP

      OngNoi
      0
    2. OngNoi Messages postés 11 Statut Membre 3
       
      Re-bonjour Lupin,

      Je t'ai quitté un peu vite car la 3è instruction ne marche pas, elle donne des résultats bizarres.
      Mais elle m'a inspiré et j'ai trouvé la bonne syntaxe pour aller à la première cellule vide de la colonne:

      Selection.End(xlDown).Select
      ActiveCell.Offset(1, 0).Select

      Les 2 autres instructions marchent à merveille

      Merci encore
      0