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 :

VBA Traiter les lignes selectionnées (contigues et non contigues)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut VBA Traiter les lignes selectionnées (contigues et non contigues)
    Bonjour,

    Je voudrais par macro pouvoir retirer le numéro des lignes qui sont sélectionnées dans une feuille Excel.

    J'ai un petit problème.
    - J'arrive à traiter une sélection lignes contigües. Ex. : lignes 10-22.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Selection
         StartRow = .Cells(1).Row
         EndRow = .Cells(.Cells.Count).Row
    End With
    - J'arrive à traiter des sélections de cellules séparées. Ex. : lignes 10,13,17,21
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each MyNumberRow In Selection.Areas
         RowNdx = MyNumberRow.Row
    Next

    Mais je n’arrive pas à traiter un mélange des deux méthodes de sélections. Lignes 10,13-20,22,24,26-30.

    Quelqu’un pourrait-il m’aider à avoir un bout de code qui pourrait faire en sorte que je puisse utiliser l’ensemble des sélections ?

    D’avance merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut adresse
    Bonjour 0uistyty.

    Bienvenu sur le Forum!

    Tu peux essayer d'adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub essai()
    Debug.Print Selection.Address
    End Sub
    Mais les selections ne sont absolument pas nécessaires à une action sur des cellules (Range) contigües ou non.

    Que veux-tu faire de ta sélection?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut
    Bonjour,

    Merci pour la réponse, je vais tester un peu plus tard dans la journée.

    Citation Envoyé par MarcelG Voir le message
    Que veux-tu faire de ta sélection?
    Ce que je veux faire; je veux que l'utilisateur puisse sélectionner un ou des lignes(ou cellules de lignes) qu'il puisse lancer une macro qui fait un export des lignes sélectionnées sous différentes méthodes (Shift et/ou Ctrl).

    A+ je vous donne des nouvelles sur le résultat.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 9
    Par défaut
    Hello,

    J'ai ma solution.

    J'ai opté pour une fonction qui alimente un dictionnaire, que j'utilise par la suite.

    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
    17
    18
    19
    20
    21
    22
    23
     
    Public Sub GetlineNumber()
        Dim RangeArray, rownumber, myRange, i
     
        Set g_DicLineNumbers = CreateObject("Scripting.Dictionary")
     
        RangeArray = Split(Selection.Address, ",")
        For Each myRange In RangeArray
            If InStr(myRange, ":") Then
                With Range(myRange)
                     StartRow = .Cells(1).Row
                     EndRow = .Cells(.Cells.Count).Row
                End With
     
                For i = StartRow To EndRow
                    g_DicLineNumbers.Add i, i
                Next i
            Else
                g_DicLineNumbers.Add Range(myRange).Row, Range(myRange).Row
            End If
        Next
     
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each RowNdx In g_DicLineNumbers.Key
          Msgbox RowNdx 
    Next
    Merci d'avoir éclairé mon chemin.

    Cdt.

    christian

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut dictionnaire
    Salut,

    Joli code.

    Personnellement, je préfère comme toi utiliser en premier lieu les variables "virtuelles" que sont les tableaux, les collections et les dictionnaires.

    N'oublie pas de positionner ton post en mode "Résolu".

    Bonne soirée.

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

Discussions similaires

  1. [XL-2010] VBA Supprimer les lignes d'un tableau en dessous de lignes d'en tete
    Par vyzouille dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2013, 10h10
  2. Traiter les lignes commençant par un espace
    Par qsd88 dans le forum Général Java
    Réponses: 7
    Dernier message: 01/06/2012, 22h08
  3. [XL-2010] Traiter les lignes sélectionnées
    Par bastou93 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2011, 11h44
  4. [VBA] Dupliquer les lignes
    Par toto92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2007, 10h25
  5. Réponses: 4
    Dernier message: 01/10/2006, 16h37

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