Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

procédure

6 réponses
Avatar
jean-luc Guitard
Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....

6 réponses

Avatar
DanielCo
Bonjour.
"Union" n'est pas une méthode de "sheet". Mets :
With Sheets("Source")
Ma_plage = Union(.Range(.Cells(1, 10), .Cells(4, 10)), .Range(.Cells(1,
I), .Cells(4, I))).Address
End With
Cordialement.
Daniel


Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....
Avatar
michdenis
Bonjour,

Si tu ne veux pas sélectionner la feuille, emploie ce type de syntaxe :

Pour écrire ceci : Cells(4, "I"), la lettre qui désigne la colonne doit être
en guillemet.

'------------------------
Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4, 10)), _
.Range(.Cells(1, "I"), .Cells(4, "I"))).Address

End With
'------------------------

Comme le deux plages de cellules sont adjacentes, pourquoi ne pas écrire :

Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & .Range("H1:i4").adddress
End With


MichD
--------------------------------------------
"jean-luc Guitard" a écrit dans le message de groupe de discussion : 4d21cd30$0$7707$

Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....
Avatar
DanielCo
Bonjour Denis.
A moins que, comme souvent, I soit une variable.
Cordialement.
Daniel


Bonjour,

Si tu ne veux pas sélectionner la feuille, emploie ce type de syntaxe :

Pour écrire ceci : Cells(4, "I"), la lettre qui désigne la colonne doit être
en guillemet.

'------------------------
Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4,
10)), _
.Range(.Cells(1, "I"), .Cells(4, "I"))).Address

End With
'------------------------

Comme le deux plages de cellules sont adjacentes, pourquoi ne pas écrire :

Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & .Range("H1:i4").adddress
End With


MichD
--------------------------------------------
"jean-luc Guitard" a écrit dans le message de groupe de discussion :
4d21cd30$0$7707$

Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....
Avatar
michdenis
Si c'est le cas, tu as raison Daniel,
cependant, il a omis de déclarer les variables de ces procédures
et ce n'est pas une bonne habitude !
;-)


MichD
--------------------------------------------
"DanielCo" a écrit dans le message de groupe de discussion : ifsk69$ouq$

Bonjour Denis.
A moins que, comme souvent, I soit une variable.
Cordialement.
Daniel


Bonjour,

Si tu ne veux pas sélectionner la feuille, emploie ce type de syntaxe :

Pour écrire ceci : Cells(4, "I"), la lettre qui désigne la colonne doit être
en guillemet.

'------------------------
Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4,
10)), _
.Range(.Cells(1, "I"), .Cells(4, "I"))).Address

End With
'------------------------

Comme le deux plages de cellules sont adjacentes, pourquoi ne pas écrire :

Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & .Range("H1:i4").adddress
End With


MichD
--------------------------------------------
"jean-luc Guitard" a écrit dans le message de groupe de discussion :
4d21cd30$0$7707$

Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....
Avatar
jean-luc Guitard
re bonjour,
La procedure fonctionne mais je ne m'explique pas pourquoi je dois écrire .SetSourceData
Sheets("Source").Range(Ma_plage), PlotBy:=xlColumns
au lieu de .SetSourceData Range(Ma_plage), PlotBy:=xlColumns sinon ça ne trace qu'un graphique les autres sont vierges
Pourtant dans Ma_plage , Source est pris en compte ex:"Source!$j$1:$k$4"

For I = 11 To 15
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4, 10)), .Range(.Cells(1,
I), .Cells(4, I))).Address
End With
'---------------Trace le
Graphique-----------------------------------------------------------------------------------------------------------------
Set graphe = Worksheets(4).ChartObjects.Add(300, 1, 400, 220)
With graphe.Chart
.SetSourceData Sheets("Source").Range(Ma_plage), PlotBy:=xlColumns
.ChartType = xl3DPieExploded
.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _
False, HasLeaderLines:=True, ShowSeriesName:úlse, ShowCategoryName:= _
True, ShowValue:úlse, ShowPercentage:=True, ShowBubbleSize:úlse
.ChartTitle.Font.Name = "Arial"
.ChartTitle.Font.Bold = msoTrue
.ChartTitle.Font.Size = 14
'.Legend.Position = xlBottom
.HasLegend = False
End With
Next

merci pour vos réponses


"DanielCo" a écrit dans le message de groupe de discussion : ifsk69$ouq$
Bonjour Denis.
A moins que, comme souvent, I soit une variable.
Cordialement.
Daniel


Bonjour,

Si tu ne veux pas sélectionner la feuille, emploie ce type de syntaxe :

Pour écrire ceci : Cells(4, "I"), la lettre qui désigne la colonne doit être
en guillemet.

'------------------------
Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4, 10)), _
.Range(.Cells(1, "I"), .Cells(4, "I"))).Address

End With
'------------------------

Comme le deux plages de cellules sont adjacentes, pourquoi ne pas écrire :

Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & .Range("H1:i4").adddress
End With


MichD
--------------------------------------------
"jean-luc Guitard" a écrit dans le message de groupe de discussion :
4d21cd30$0$7707$

Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)), Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la feuille
source?
merci d'avance....




Avatar
DanielCo
Pourquoi faire compliqué ?

With Sheets("Source")
Set Ma_plage = Union(.Range(.Cells(1, 10), .Cells(4, 10)),
.Range(.Cells(1, I), .Cells(4, I)))
Sheets("Feuil2").ChartObjects(1).Chart.SetSourceData Ma_plage,
PlotBy:=xlColumns
End With
End Sub

Daniel


re bonjour,
La procedure fonctionne mais je ne m'explique pas pourquoi je dois écrire
.SetSourceData Sheets("Source").Range(Ma_plage), PlotBy:=xlColumns
au lieu de .SetSourceData Range(Ma_plage), PlotBy:=xlColumns sinon ça ne
trace qu'un graphique les autres sont vierges
Pourtant dans Ma_plage , Source est pris en compte ex:"Source!$j$1:$k$4"

For I = 11 To 15
With Sheets("Source")
Ma_plage = .Name & "!" &
Application.Union(.Range(.Cells(1, 10), .Cells(4, 10)), .Range(.Cells(1, I),
.Cells(4, I))).Address
End With
'---------------Trace le
Graphique-----------------------------------------------------------------------------------------------------------------
Set graphe = Worksheets(4).ChartObjects.Add(300, 1, 400, 220)
With graphe.Chart
.SetSourceData Sheets("Source").Range(Ma_plage),
PlotBy:=xlColumns
.ChartType = xl3DPieExploded
.SeriesCollection(1).ApplyDataLabels AutoText:=True,
LegendKey:= _
False, HasLeaderLines:=True,
ShowSeriesName:úlse, ShowCategoryName:= _
True, ShowValue:úlse, ShowPercentage:=True,
ShowBubbleSize:úlse
.ChartTitle.Font.Name = "Arial"
.ChartTitle.Font.Bold = msoTrue
.ChartTitle.Font.Size = 14
'.Legend.Position = xlBottom
.HasLegend = False
End With
Next

merci pour vos réponses


"DanielCo" a écrit dans le message de groupe de
discussion : ifsk69$ouq$
Bonjour Denis.
A moins que, comme souvent, I soit une variable.
Cordialement.
Daniel


Bonjour,

Si tu ne veux pas sélectionner la feuille, emploie ce type de syntaxe :

Pour écrire ceci : Cells(4, "I"), la lettre qui désigne la colonne doit
être
en guillemet.

'------------------------
Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & Application.Union(.Range(.Cells(1, 10), .Cells(4,
10)), _ .Range(.Cells(1, "I"), .Cells(4, "I"))).Address

End With
'------------------------

Comme le deux plages de cellules sont adjacentes, pourquoi ne pas écrire :

Dim Ma_Plage As String
With Sheets("Source")
Ma_plage = .Name & "!" & .Range("H1:i4").adddress
End With


MichD
--------------------------------------------
"jean-luc Guitard" a écrit dans le message de groupe de discussion :
4d21cd30$0$7707$

Bonjour,
Dans une macro, j'ai les 2 lignes ci dessous, (mes données sont sur la
feuille "Source")
Sheets("Source").Select
Ma_plage = Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1,
I), Cells(4, I))).Address
si j'écris ceci sans sélectionner la feuille "Source" comme ci dessous:
Ma_plage =Sheets("Source").Union(Range(Cells(1, 10), Cells(4, 10)),
Range(Cells(1, I), Cells(4, I))).Address
J'ai une erreur, Ma_plage est vide, est ce possible sans activer la
feuille
source?
merci d'avance....