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 :

Obtenir la valeur de l'une des cellules d'une sélection de cellule [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Obtenir la valeur de l'une des cellules d'une sélection de cellule
    Bonjour à tous !

    Mon problème VBA (j'espère avoir posté au bon endroit) est simple mais je ne trouve pas de solution, et ce n'est pas faute d'avoir cherché.

    Je demande à l'utilisateur de la macro de sélectionner des cellules (1 cellule, une plage de cellule, ou plusieurs cellules séparées). Je voudrais afficher leurs valeurs (.value) dans une listbox dans un userform.

    Ce que j'ai trouvé pour l'instant :

    Selection.Item(Numéro de l'item).value
    Selection(Numéro de l'item).value

    Ces propriétés fonctionnent mais seulement si l'utilisateur a selectionné une seule cellule ou une plage de cellule. Dans le cas de plusieurs cellules séparées ca ne fonctionne pas.

    Imaginons que l'utilisateur selectionne A1 et C4 (en gros à l'aide de la touche ctrl) j'ai :

    Selection(1).row = 1 'Pour la cellule A1, la première sélectionnée
    Selection(2).row = 2 'Pour la cellule C4 alors qu'il me faudrait = 4 (C4)

    En fait, ça fait comme si j'avais sélectionné une plage de cellule dont la première est A1 et la deuxième est A2.

    Je vous remercie par avance pour votre aide, je trouve rien du tout sur le net !!!

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonsoir DeerData

    Voici une piste que tu dois adapter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub tt()
     
    For i = 1 To Selection.Areas.Count
     
    Set ar = Selection.Areas(i)
     Cells(i, 5).Value = ar.Address
     
     nbr = 0
    For Each c In ar
     nbr = nbr + 1
     Cells(i, 5 + nbr).Value = c.Address
    Next
     
    Next
     
    End Sub

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Dans le même esprit que Docmarti. Attention, la plage de sélection est parcourue de haut en bas et de gauche à droite donc, si C4 et B10 sont sélectionnées, la ligne 10 sera inscrite en premier et ensuite, la ligne 4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    'à l'ouverture de la Form
    Private Sub UserForm_Initialize()
     
        Dim Cel As Range
     
        For Each Cel In Selection '<-- sur la feuille active
     
            Me.ListBox1.AddItem Cel.Row
            'Me.ListBox1.AddItem Cel.value
     
        Next Cel
     
    End Sub
    Hervé.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Super !!!

    Merci beaucoup à tous les deux Docmarti et Theze pour votre etonnante rapidité

    Je vais utiliser la deuxième méthode parce qu'elle renvoi .row comme .value très facilement alors que la première m'a renvoyé $E$2 par exemple... De plus j'avoue ne pas maitriser .Areas() ni .Address...

    Bonne continuation !!!

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

Discussions similaires

  1. [XL-2003] Récupération des données dans une base à partir d'une valeur donnée
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 01/04/2011, 15h33
  2. Réponses: 2
    Dernier message: 17/03/2011, 22h45
  3. Réponses: 4
    Dernier message: 24/02/2010, 15h24
  4. [MySQL] Obtenir la valeur de l'auto-increment lors d'une insertion
    Par yazerty dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/01/2006, 16h18
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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