VBA Pblm utilisation de UNION

Fermé
StagiaireVBA - 4 oct. 2010 à 15:05
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 4 oct. 2010 à 17:22
Bonjour,

dans mon module, j'ai la macro suivante :

Sub plages_donnees_composees(feuille, Base_serie1, Serie1, base_serie1_axeX, serie1_axeX, base_serie1_titre, serie1_titre, Base_serie2, serie2, base_serie2_axeX, serie2_axeX, base_serie2_titre, serie2_titre, Base_serie1L, serie1L, base_serie1L_axeX, serie1L_axeX, base_serie1L_titre, serie1L_titre, Base_serie2L, serie2L, base_serie2L_axeX, serie2L_axeX, base_serie2L_titre, serie2L_titre)
Dim i As Integer
Dim Cellule As Range
Dim Plage1 As Range, Plage2 As Range, plage3 As Range, plage4 As Range, plage5 As Range, plage6 As Range, plage7 As Range, plage8 As Range

Sheets(feuille).Activate
Set Cellule = Sheets(feuille).Range(base_serie1_axeX)
Cellule.Activate
NbIndic = 0

For i = 1 To 17

If IsEmpty(ActiveCell) = False Then NbIndic = NbIndic + 1
ActiveCell.Offset(1, 0).Activate

Next i

Sheets(feuille).Range(Base_serie1).Activate
Set Plage1 = Range(ActiveCell, ActiveCell.Offset(2, 0))
Sheets(feuille).Range(Base_serie1L).Activate
Set Plage2 = Range(ActiveCell, ActiveCell.Offset(12, 0))
Set Serie1 = Union([Plage2], [Plage1])

Sheets(feuille).Range(base_serie1_axeX).Activate
Set plage3 = Range(ActiveCell, ActiveCell.Offset(2, 0))
Sheets(feuille).Range(base_serie1L_axeX).Activate
Set plage4 = Range(ActiveCell, ActiveCell.Offset(12, 0))
Set serie1_axeX = Application.Union([plage4], [plage3])

Sheets(feuille).Range(Base_serie2).Activate
Set plage5 = Range(ActiveCell, ActiveCell.Offset(2, 0))
Sheets(feuille).Range(Base_serie2L).Activate
Set plage6 = Range(ActiveCell, ActiveCell.Offset(12, 0))
Set serie2 = Union(plage5, plage6)

Sheets(feuille).Range(base_serie2_axeX).Activate
Set plage7 = Range(ActiveCell, ActiveCell.Offset(2, 0))
Sheets(feuille).Range(base_serie2L_axeX).Activate
Set plage8 = Range(ActiveCell, ActiveCell.Offset(12, 0))
Set serie2_axeX = Union(plage7, plage8)



End Sub


Mon problème c'est qu'a chaque fois, seule la première plage est prise en compte (par exemple, Serie1 reprend uniquement la plage2)

Est ce que quelqu'un saurait d'ou peur bien venir l'erreur?

Merci d'avance!

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
4 oct. 2010 à 17:22
Bonjour,

Difficile de répondre sans connaitre les valeurs des paramètres d'entrée de la procédure, mais si la cellule Base_serie1 se trouve dans la Plage2 c'est normal.

Pourquoi active tu les cellules pour calculer Plage ?

Il suffit de faire :
Set Plage1 = Range(Base_serie1).Resize(2, 0)
Set Plage2 = Range(Base_serie1L).Resize(12, 0)
Set Serie1 = Union([Plage2], [Plage1])


Patrice
0