XL 2010 À propos d'une plage de cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J’ai une plage nommée ("Col_DD1") de 4 cellules avec une solution de continuité. Entendez par là que toutes les cellules ne sont pas contiguës. Je détaille cette plage : [F7:F8,F10:F11]. Donc pas F9.

Si je lance : [F7:F8,F10:F11].Select, toute cette plage est sélectionnée mais pas F9 (tout va bien !).

Je déclare cel as range

Puis : Set cel = [Col_DD1].Cells(1, 1)
Et je lance : cel.Select --> 1ère cellule de la plage Col_DD1 sélectionnée (OK)

Si Set cel = [Col_DD1].Cells(2, 1)
cel.Select --> 2ème cellule de la plage Col_DD1 sélectionnée (OK)

Si Set cel = [Col_DD1].Cells(3, 1)
cel.Select --> cellule F9 (qui n’appartient pas à la plage Col_DD1) sélectionnée (Pas OK)

Si Set cel = [Col_DD1].Cells(4, 1)
cel.Select --> 3ème cellule de la plage Col_DD1 sélectionnée (Pas OK)

Il y aurait-il un moyen pour sélectionner chacune des 4 cellules de cette plage d'une manière logique, omme j'ai tenté de le faire ?
 
Bonjour,
Je ne sais pas trop ce que tu veux faire...
VB:
Sub a()
    Dim Rng As Range
    Dim Cel As Range
   
    Set Rng = ActiveSheet.Range("F7:F8,F10:F11")

    For Each Cel In Rng
        Cel.Select
        MsgBox "Cellule " & Cel.Address
    Next Cel
End Sub

Sub b()
    Dim Rng As Range
    Dim Grp As Range
    Dim Cel As Range
   
    Set Rng = ActiveSheet.Range("F7:F8,F10:F11")
    
    For Each Grp In Rng.Areas
        MsgBox "Area " & Grp.Address
       
        For Each Cel In Grp
            Cel.Select
            MsgBox "Cellule " & Cel.Address
        Next Cel
    Next Grp
End Sub

Sub d()
    Dim Rng As Range
    Dim Grp As Range
    Dim Cel As Range
    Dim i As Integer
   
    Set Rng = ActiveSheet.Range("F7:G8,F10:G11")
   
    For Each Grp In Rng.Areas
        MsgBox "Area " & Grp.Address
       
        For i = 1 To Grp.Cells.Count
            Set Cel = Grp.Cells(i)
            Cel.Select
            MsgBox "Cellule " & Cel.Address
        Next i
    Next Grp
End Sub

Sub f()
    Dim Rng As Range
    Dim Grp As Range
    Dim Cel As Range
    Dim k As Integer
    Dim i As Integer
    
    Set Rng = ActiveSheet.Range("F7:G8,F10:G11")
    
    For k = 1 To Rng.Areas.Count
        Set Grp = Rng.Areas(k)
        MsgBox "Area " & Grp.Address
        
        For i = 1 To Grp.Cells.Count
            Set Cel = Grp.Cells(i)
            Cel.Select
            MsgBox "Cellule " & Cel.Address
        Next i
    Next k
End Sub
 
Dernière édition:
Bonjour Dudu2,

Je voulais réaliser une boucle pour me déplacer dans la plage en question. Mais force est de constater que ce n'est pas possible en raison de l'interruption dans la plage.
Pourtant quand on écrit : [Col_DD1].Select, les 4 cellules de la plage (en fait des 2 plages de 2 cellules chacune, réunies sous un seul et même nom) sont bien sélectionnées et pas la cellule (F9) qui sépare les 2 plages. Donc, logiquement, on pourrait s'attendre à :
[Col_DD1].Cells(1, 1).Select --> 1ère cellule de la (double)plage sélectionnée (F7)
[Col_DD1].Cells(2, 1).Select --> 2ème cellule de la (double)plage sélectionnée (F8)
[Col_DD1].Cells(3, 1).Select --> 3ème cellule de la (double)plage sélectionnée (F10)
[Col_DD1].Cells(4 1).Select --> 4ème cellule de la (double)plage sélectionnée (F11)

Et bien non :
[Col_DD1].Cells(3, 1).Select --> F9
[Col_DD1].Cells(4, 1).Select --> F10

Ça m'a un peu étonné, mais ce n'est pas grave. Tant pis pour la boucle.
 
Bonjour Magic_Doctor, Dudu2,
Je voulais réaliser une boucle pour me déplacer dans la plage en question. Mais force est de constater que ce n'est pas possible en raison de l'interruption dans la plage.
Bien sûr que c'est possible :
VB:
Sub a()
Dim c As Range
For Each c In [Col_DD1]
    c.Select
    MsgBox c.Address(0, 0) & " = " & c
Next
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Retour