IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récuperer la position des cellules d'une selection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut Récuperer la position des cellules d'une selection
    Voi je cherche a trouver les positions des cellules (n° de ligne et n° de colonne) d'une selection de plusieurs cellules dans l'ensemble de la feuille en cours


    quelqu'un a une idée? :/

  2. #2
    Membre éprouvé
    Avatar de wape
    Profil pro
    Inscrit en
    Février 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2003
    Messages : 90
    Par défaut
    Bonjour,

    Essaye ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Cellule As Range
     
    For Each Cellule In Selection
       MsgBox "Ligne : " & Cellule.Row & vbCrLf & "Colonne : " & Cellule.Column
    Next Cellule
    wape

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim rng as Range
    Dim r as Long
    Dim c as long
     
    For Each rng in Selection
        r = rng.Row
        c = rng.Column
    Next rng

  4. #4
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Singular, avec ta méthode, tu n’obtiens à la fin de la boucle que la ligne et la colonne de la dernière cellule de la sélection

  5. #5
    Membre éprouvé Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Par défaut
    Merci a tous ca fait plaisir

    je viens de tester les 3 méthodes et toutes se valent (1 adaptation necessaire seulement, juste un détail)

    et donc un grand merci a vous je m'attendais pas a une réponse aussi rapide

    merki!

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Citation Envoyé par Bigalo Voir le message
    ... Singular, avec ta méthode, tu n’obtiens à la fin de la boucle que la ligne et la colonne de la dernière cellule de la sélection
    Évidemment.

    Ce n'est qu'un exemple d'itération; il faut ajouter du code à l'intérieur de la boucle pour accomplire quelque chose avec ça...

  7. #7
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonjour,

    Tu peux utiliser les propriétés Address qui te donneront la combinaison de lettres pour la colonne, et le numéro de ligne, ou Row et Column qui te donneront le numéro de ligne et de colonne pour chaque cellule.

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub NumLignesEtColonnes()
    Dim Mat(), c As Range, i As Integer
        ReDim Mat(Selection.Count - 1, 1)
            For Each c In Selection
                Mat(i, 0) = c.Row
                Mat(i, 1) = c.Column
                i = i + 1
            Next
        MsgBox "La dernière cellule de la sélection est sur la " & Mat(i - 1, 0) & "ème ligne," & vbNewLine & "dans la " & Mat(i - 1, 1) & "ème colonne."
    End Sub

  8. #8
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir Singular,

    Je me doute bien qu’en ajoutant quelque chose dans la boucle on peut obtenir ce que l’on veut !

    Mais étant donné la question initiale :

    Citation Envoyé par Many31 Voir le message
    Je cherche a trouver les positions des cellules (n° de ligne et n° de colonne) d'une selection de plusieurs cellules dans l'ensemble de la feuille en cours
    il me semblait plus logique de renseigner une matrice permettant d’avoir accès à l’ensemble des positions à la fin du traitement, c'est tout.

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Désolé, Bigalo, mais...

    Citation Envoyé par Many31 Voir le message
    Voi je cherche a trouver les positions des cellules (n° de ligne et n° de colonne) d'une selection de plusieurs cellules dans l'ensemble de la feuille en cours


    quelqu'un a une idée? :/
    C'est pour les avoir séparément que je fais une boucle. Bien sur, je pourrais toujours passer par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim c As Range
     
    For Each c In Selection
        ' Faire quelque chose avec c
    Next c
    Mais là, on n'a pas les positions mais plutôt les Ranges séparés.

    En employant Address, on obtient un String qui est un peu plus compliqué à utiliser que des indices de cellules. Faudrait employer des IIf() et des Split() imbriqués pour en sortir quelque chose.


  10. #10
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Singular,

    Nous somme d’accord sur les positions

    Si tu examine le code VBA que nous avons proposé tous les 2, il est d’aileurs très proche :

    Voici ta boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each rng in Selection
        r = rng.Row
        c = rng.Column
    Next rng
    et voici la mienne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For Each c In Selection
                Mat(i, 0) = c.Row
                Mat(i, 1) = c.Column
                i = i + 1
            Next
    J’utilise simplement une matrice qui permet

    • avec Mat(1, 0) de stocker le numéro de ligne de la seconde cellule,
    • avec Mat(3, 1) de stocker le numéro de colonne de la quatrième cellule,

    Cela permet de s’en servir lors de chaque passage dans la boucle, ou plus tard, puisque pour chaque cellule, les numéros de ligne et de colonne sont conservés.

    NB - Par défaut dans VBA, les indices d’une matrice ou d’un Array commencent à 0. Mat(0, 0) fait donc référence à la première cellule, et Mat(1, 0) à la seconde.

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Par défaut
    Vu!

    Pour l'indice qui commence à zéro, Option Base 1 au début du module permet aux tableaux de commencer à 1.

  12. #12
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Citation Envoyé par Singular Voir le message
    Option Base 1 au début du module permet aux tableaux de commencer à 1.
    Là encore, nous sommes d’accord . C'est pour cela que j'ai écrit :
    Citation Envoyé par Bigalo Voir le message
    NB - Par défaut dans VBA, les indices d’une matrice ou d’un Array commencent à 0.
    J’utilisais Option Base 1 assez fréquemment quand je suis passé de l’ancien langage macro d’Excel à VBA, puis j’ai complètement cessé par la suite. Avec un peu d’habitude, le fait que des indices commencent à 0 plutôt qu’à 1 devient parfaitement naturel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détection position des yeux dans une image
    Par Morvan Mikael dans le forum Traitement d'images
    Réponses: 16
    Dernier message: 24/12/2008, 23h09
  2. faire une somme des cellules d'une selection
    Par prisme7 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2008, 23h23
  3. [D-7][PostGres]Récuperer l'ensemble des colonnes d'une table
    Par Escandil dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/10/2005, 09h17
  4. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25
  5. Colorier le fond des cellules d'une stringrid
    Par ORLIK dans le forum C++Builder
    Réponses: 7
    Dernier message: 09/11/2004, 21h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo