Activation d'une cellule dans une plage discontinue

avaya

XLDnaute Nouveau
Bonjour à tous,

J'ai un problème certainement futile mais que je n'arrive pas à le résoudre.
J'aimerais appliquer des actions à une cellule d'une plage discontinue.
Par exemple:
Dans la plage A1 à A3 + A5 à A8, je voudrais donner la valeur 2 à A5.


Or si je fais:
Union(Range("A1:A3"), Range("A5:A8")).Cells(4, 1).Value = 2
C'est la cellule A4 qui se voit attribuer la valeur 2...

Si je fais:
Union(Range("A1:A3"), Range("A5:A8")).Range("A1").Offset(3, 0).Value = 2
Ca ne fonctionne pas non plus...


Est-ce que quelqu'un pourrait m'aider?
Je vous remercie d'avance.

Avaya
 

Efgé

XLDnaute Barbatruc
Re : Activation d'une cellule dans une plage discontinue

Bonjour avaya, gosselien

Même si je ne vois pas l'intérêt :

En créant une plage en Union tu crés des Areas.
Donc les cellules repartent de Cells(1,1) à chaque aréa.

Tu peux voir comme ceci:
VB:
Union(Range("A1:A3"), Range("A5:A8")).Areas(2)(1).Value = 2

Cordialement
 

avaya

XLDnaute Nouveau
Re : Activation d'une cellule dans une plage discontinue

Bonjour à vous deux,

Gosselin : Justement, ce que j'avais indiqué plus haut était un exemple.
Efgé : Oui à première vue, cela n'a pas d'intérêt comme j'ai pris un exemple ultra simpliste mais ce sera très utile dans ma macro! Je te remercie pour ta solution!

Avaya
 
Dernière édition:

avaya

XLDnaute Nouveau
Re : Activation d'une cellule dans une plage discontinue

Rebonjour,

J'ai répondu trop rapidement. Ca fonctionne mais ce n'est pas ce que je recherche puisque ça demande des paramétrages qui ne servent à rien ici (au moins qu'il n'existe pas de meilleure solution).
Je vais essayer de mieux me faire comprendre avec un exemple d'utilisation plus concret en fichier joint.

Dans le fichier, j'aimerais ne pas avoir à faire un truc comme ça:

Sub test()
Dim i As Long
For i = 1 To 3
Range("B1:B3").Cells(i, 1).Value = nombre(i)
Next i
For i = 4 To 5
Range("B5:B6").Cells(i-3, 1).Value = nombre(i)
Next i
End Sub

Je pensais qu'en faisant une union de deux plages, ce serait une sorte de "fusion" et qu'en faisant cetteplage.Cells je ne sélectionnerais QUE des cellules de cette plage (pas les trous à l'intérieur).
Je sais pas si c'est compréhensible... n'hésitez pas à me dire si vous ne comprenez pas où je veux en venir.

Avaya
 

Pièces jointes

  • Problème_union_plage.xlsm
    15.5 KB · Affichages: 8
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Activation d'une cellule dans une plage discontinue

Re
Je t'ai expliqué que tu ne pouvais pas boucler 1 to 5 dans une plage créee avec une union.......
Il faut boucler sur les cellules de la plage avec un objet Range:
VB:
Sub test()
Dim Rng As Range, i As Long
    For Each Rng In Union(Range("B1:B3"), Range("B5:B6"))
        i = i + 1
        Rng.Value = nombre(i)
    Next Rng
End Sub

D'autre aprt, ta fonction me semble mal montée. Essai comme ceci:
VB:
Function nombre(X As Long) As Long
Dim Tabl(1 To 5) As String
Tabl(1) = 10
Tabl(2) = 20
Tabl(3) = 30
Tabl(4) = 40
Tabl(5) = 55
nombre = Tabl(X)
End Function

Cordialement
 

Discussions similaires