Conserver sélections multiples dans macro

Samuel

XLDnaute Nouveau
Bonsoir à tous,
J'ai fait une macro pour sélectionner certaines plages de cellules espacées régulièrement dans la colonne A d'une feuille Excel:

Sub Macro1()

For i = 0 To 72
a = 189 + i * 73
b = 224 + i * 73

Set rr = Range(Cells(a, 1), Cells(b, 1))

rr.Select

Next i

End Sub


Malheureusement, les plages de cellules ne sont pas conservées, et à la fin de la Macro, je me retrouve avec uniquement la dernière plage de la boucle sélectionnée. Comment faire pour garder toutes ces plages de cellules (équivalent de la touche Ctrl lors d'une sélection directe dans la feuille, quoi).
D'avance merci beaucoup,

Samuel
 

Excel-lent

XLDnaute Barbatruc
Re : Conserver sélections multiples dans macro

Bonjour Samuel,

Tu as essayé avec l'enregistreur de macro?

Code:
Sub Macro1()

    Range("B10:B13,D13:D17,F19:F23").Select

End Sub

Testé ci-dessus, et ça fonctionne! Il n'y a plus qu'à l'adapter à ton cas!

Bonne soirée
 

ROGER2327

XLDnaute Barbatruc
Re : Conserver sélections multiples dans macro

Bonsoir Samuel
Quelque chose comme ça ?
Code:
Sub Macro1()
Dim i As Long, a As Long, b As Long, c As Long
Dim rr As Range
    a = 189: b = 224: c = 73
    Set rr = Range(Cells(a, 1), Cells(b, 1))
    For i = 1 To 72
        Set rr = Union(rr, Range(Cells(a + i * c, 1), Cells(b + i * c, 1)))
    Next i
    rr.Select
End Sub
Bonne nuit !
ROGER2327
 

bcharef

XLDnaute Accro
Re : Conserver sélections multiples dans macro

Bonsoir Samuel,
Bonsoir à toutes et à tous.
Salut Excel-lent,
Salut ROGER2327.

Ma lecture du présent poste m'a permis de constater que, deux macros ont été proposées, mais avec deux méthodes différentes, dont une, celle de notre ami Excel-lent, pourra être crée par l'enregistreur; et, c'est ce qui a été fait par moi même et avec un nettoyage du code enregistré.

Et là; je bloque entièrement avec celle proposée par notre ami ROGER2327, mais, je pense belle et bien que c'est l'étape de l'utilisation des variables.

Il est utile à vous informer que, je suis qu'un débutant en la matiére.

En attente, une de vos éclaircissements lumineux, veuillez agréer mes salutations distinguées.

Bcharef
 

Pièces jointes

  • Macro.zip
    27.6 KB · Affichages: 27
  • Macro.zip
    27.6 KB · Affichages: 24
  • Macro.zip
    27.6 KB · Affichages: 24
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Conserver sélections multiples dans macro

Bonsoir bcharef,
Je vais tenter d'expliquer ma procédure, mais il faut d'abord noter que la procédure de Excel-lent et la mienne ne font pas exactement la même chose ; celle de Excel-lent sélectionne une seule plage dans chaque colonne B, D et F, la mienne sélectionne plusieurs plage dans la seule colonne A.
Code:
Sub Macro1()
Dim i As Long, a As Long, b As Long, c As Long                              '1
Dim rr As Range                                                             '2
    a = 189: b = 224: c = 73                                                '3
    Set rr = Range(Cells(a, 1), Cells(b, 1))                                '4
    For i = 1 To 72                                                         '5
        Set rr = Union(rr, Range(Cells(a + i * c, 1), Cells(b + i * c, 1))) '6
    Next i                                                                  '7
    rr.Select                                                               '8
End Sub
  • Les lignes 1 et 2 définissent les variables dont j'ai besoin.
  • Ligne 3, j'initialise les variables qui définissent la taille des plages à sélectionner et leur emplacement dans la colonne A. Je pose 189 et 224 pour a et b parce que la première plage à sélectionner est A129:A224. Je pose 73 pour c car on veut sélectionner des plages de même dimension que la première de 73 en 73 lignes.
  • Ligne 4, je définis rr comme étant la plage A129:A224.
  • Lignes 5 à 7, je crée une boucle à exécuter 72 fois.
  • La ligne 6 sera donc exécutée 72 fois, avec la variable i prenant successivement les valeurs 1, 2, 3, ..., 71 , 72. La signification de la ligne 6 est la suivante :
    Modifier la valeur de rr en la remplaçant par la réunion sa valeur actuelle et de la plage
    Range(Cells(a + i * c, 1), Cells(b + i * c, 1))
    La première fois, rr est la plage A129:A224. Comme i vaut 1,
    Range(Cells(a + i * c, 1), Cells(b + i * c, 1))
    signifie Range(Cells(189 + 1 * 73, 1), Cells(224 + 1 * 73, 1)), c'est à dire A262:A297.
    Par conséquent, après la première exécution de la ligne 6, rr représente les plages A129:A224 et A262:A297
    À chaque exécution de la ligne 6, une nouvelle plage sera ajoutée à rr puisque i augmente d'une unité à chaque passage.
  • La ligne 8 est exécutée après la soixante-douzième exécution de la boucle Elle sélectionne, dans la feuille active, les 73 plages de cellules que représente rr.
Voilà ! Bon courage et bonne nuit !​
ROGER2327
 

bcharef

XLDnaute Accro
Re : Conserver sélections multiples dans macro

Bonjour ROGER2327,

Je vous remercie infiniment de votre explication lumineuse.

Mais comment réaliser le code :

  • Pour la sélection pour une colonne B au lieu de la colonne A;
  • Pour la sélection de ligne tel que ligne n° 3;
  • Et, en fin pour une matrice tel que B2:10.

Est-il possible de crée la boucle pour qu'elle soit exécuter n fois en fonction de la cellule A1, c'est à dire, si A1=7, elle s'exécutera 7 fois.

Je vous remercie encor une fois.

Cordialement.

Bcharef
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Conserver sélections multiples dans macro

Bonsoir bcharef,
Pour ce qui est de
Pour la sélection pour une colonne B au lieu de la colonne A
il faut remplacer les "1" des lignes 4 et 6 de la procédure par le n° de la colonne souhaitée (2 pour colonne B, 3 pour colonne C, etc.).
Pour le reste, excusez-moi : je ne comprends pas bien la demande.​
Cordialement,
ROGER2327
 

Discussions similaires

Réponses
5
Affichages
353

Statistiques des forums

Discussions
312 493
Messages
2 088 958
Membres
103 990
dernier inscrit
lamiadebz