XL 2010 À propos d'une plage de cellules

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 ?
 

Dudu2

XLDnaute Barbatruc
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:

Magic_Doctor

XLDnaute Barbatruc
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.
 

Dudu2

XLDnaute Barbatruc
Et parmi les 4 exemples de parcours / boucle sur les cellules de ce Range à 2 Areas que je t'ai indiqués, tu ne trouves pas ton bonheur ?

Place ces fonctions dans un module et exécute-les (Onglet Développeur / Macros)
 

job75

XLDnaute Barbatruc
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+
 

Discussions similaires

Réponses
2
Affichages
148

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma