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 :

Connaitre les numéros des colonnes d'une sélection multiple en vba [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut Connaitre les numéros des colonnes d'une sélection multiple en vba
    Bonjour,

    Comme le dis le titre je cherche à connaitre les numéros de colonnes d'une sélection multiple.
    J'y arrive pour une sélection continue de colonne mais pour une multiple.
    je vous met mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set MEF = Application.InputBox(prompt:="Sélectionnez les colonnes dont vous voulez vérifier les codes, pas de données ouvertes", Type:=8)
    Set Nom_Onglet_MEF = MEF.CurrentRegion
    ColDeb_MEF = MEF(1, 1).Column
    ColFin_MEF = MEF(1, MEF.Columns.Count).Column
    LigDeb_MEF = MEF(1, 1).Row
    LigFin_MEF = MEF(MEF.Rows.Count, 1).Row
    Si je sélectionne les colonnes A à E j'obtiens pour ColDeb 1 et pour ColFin 5.
    Mais si je sélectionne les colonnes A et E j'obtiens pour ColDb et ColFin 1.
    Ce qui ne va pas.
    J'ai cherché sur le net et je n'ai pas trouvé la solution et je ne vois pas comment faire.

    merci de votre aide.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Ci dessous une proposition qui te retourne les colonnes sélectionnées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim StrCol() As StringDim Rg As Range
    Dim Col As Integer
    Dim i As Integer
     
    StrCol = Split(Selection.Columns.Address, ",")
     
    For i = 0 To UBound(StrCol)
        Set Rg = Range(StrCol(i))
     
        For Col = 1 To Rg.Columns.Count
            MsgBox Rg.Columns(Col).Column
        Next Col
     
    Next
    Jérôme

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each c In mef.Areas
        If c.Column + c.Columns.Count - 1 > ColFin_MEF Then
            ColFin_MEF = c.Column + c.Columns.Count - 1
        End If
    Next c
    MsgBox ColFin_MEF
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 302
    Points : 185
    Points
    185
    Par défaut
    Merci jfontaine pour ta réponse.
    Ca marche parfaitement lorsque je remplace "selection" par "MEF" dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrCol = Split(Selection.Columns.Address, ",")
    .

    Daniel.C, j'ai testé ton code mais il ne me renvoie que le numéros de la dernière colonne sélectionné.
    merci de t'être penché sur mon problème.

    Bonne journée

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Daniel.C, j'ai testé ton code mais il ne me renvoie que le numéros de la dernière colonne sélectionné.
    merci de t'être penché sur mon problème.
    Ok, mais il faut chercher à comprendre et aussi à adapter. C'est le but du forum. Voici, pour toi, la solution qui te dispensera de réfléchir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each c In mef.Areas
        MsgBox "Colonne(s) de " & c.Column & " à " & c.Column + c.Columns.Count - 1
    Next c
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2008, 07h33
  2. Afficher les noms des colonnes d'une table
    Par witch dans le forum Requêtes
    Réponses: 10
    Dernier message: 07/10/2008, 13h25
  3. Recupérer les nom des colonnes d 'une table
    Par mitnick2006 dans le forum JDBC
    Réponses: 2
    Dernier message: 08/05/2008, 21h56
  4. Réponses: 7
    Dernier message: 11/08/2006, 14h26

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