Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/01/2012, 12h25   #1
Invité de passage
 
Inscription : février 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 9
Points : 2
Points : 2
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 :
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 :
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.
0uistyty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 13h03   #2
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

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

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut adresse

Bonjour 0uistyty.

Bienvenu sur le Forum!

Tu peux essayer d'adapter

Code :
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?
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/01/2012, 13h09   #3
Invité de passage
 
Inscription : février 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 9
Points : 2
Points : 2
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.
0uistyty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h45   #4
Invité de passage
 
Inscription : février 2010
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 9
Points : 2
Points : 2
Hello,

J'ai ma solution.

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

Code :
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 :
1
2
3
For Each RowNdx In g_DicLineNumbers.Key
      Msgbox RowNdx 
Next
Merci d'avoir éclairé mon chemin.

Cdt.

christian
0uistyty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h57   #5
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

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

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
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.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h11.


 
 
 
 
Partenaires

Hébergement Web