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

Graphique "intelligent"!

8 réponses
Avatar
JBF
Bonjour,

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans toute
une colonne, je souhaite que le graphique ne tienne alors pas compte de
cette colonne ni sur l'axe des abscisses ni dans la légende.

Un petit exemple pour illustrer tout ça:

A B C
1 13 22 32
2 10 21 54
3 9 34 98

A B C
1 13 0 32
2 10 0 54
3 9 0 98


Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique. Jusque
là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par #N/A. De
plus, et c'est la que j'ai besoin de vous, je souhaite aussi que l'intitulé
de ma colonne, ici "B", disparaisse de mon graph, SANS LAISSER D'ESPACE
VIDE, de l'axe des abscisses et de la légende. Bien entendu si une valeur
redevenait positive il faut que tout réapparaisse.

Vous croyez que c'est possible?

Pour l'instant je tâtonne. J'arrive à supprimer l'intitulé B de l'axe mais
l'espace qu'il occupait reste vide. Donc il y a un grand "trou" entre A et C
et c'est vraiment pas terrible terrible.

Merci à vous
JBF

8 réponses

Avatar
Daniel
Bonjour.
Est-ce qu'une solution par macro te convient ?
Cordialement.
Daniel
"JBF" a écrit dans le message de news:

Bonjour,

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas compte
de cette colonne ni sur l'axe des abscisses ni dans la légende.

Un petit exemple pour illustrer tout ça:

A B C
1 13 22 32
2 10 21 54
3 9 34 98

A B C
1 13 0 32
2 10 0 54
3 9 0 98


Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par #N/A. De
plus, et c'est la que j'ai besoin de vous, je souhaite aussi que
l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS LAISSER
D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien entendu si
une valeur redevenait positive il faut que tout réapparaisse.

Vous croyez que c'est possible?

Pour l'instant je tâtonne. J'arrive à supprimer l'intitulé B de l'axe mais
l'espace qu'il occupait reste vide. Donc il y a un grand "trou" entre A et
C et c'est vraiment pas terrible terrible.

Merci à vous
JBF



Avatar
JB
Bonjour,

http://cjoint.com/?jhlmiZSKZZ

Function compacteCol(champ)
Dim temp()
Nlig = champ.Rows.Count
Ncol = champ.Columns.Count
ReDim temp(1 To Nlig, 1 To Ncol)
cc = 0
For C = 1 To Ncol
Tcol = 0
For L = 2 To Nlig
Tcol = Tcol + champ(L, C)
Next L
If Tcol > 0 Then
cc = cc + 1
For L = 1 To Nlig
temp(L, cc) = champ(L, C)
Next L
End If
Next C
compacteCol = temp
End Function


JB

On 7 sep, 10:10, "JBF" wrote:
Bonjour,

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans t oute
une colonne, je souhaite que le graphique ne tienne alors pas compte de
cette colonne ni sur l'axe des abscisses ni dans la légende.

Un petit exemple pour illustrer tout ça:

A B C
1 13 22 32
2 10 21 54
3 9 34 98

A B C
1 13 0 32
2 10 0 54
3 9 0 98

Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique. Jusq ue
là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par #N/A . De
plus, et c'est la que j'ai besoin de vous, je souhaite aussi que l'intitu lé
de ma colonne, ici "B", disparaisse de mon graph, SANS LAISSER D'ESPACE
VIDE, de l'axe des abscisses et de la légende. Bien entendu si une vale ur
redevenait positive il faut que tout réapparaisse.

Vous croyez que c'est possible?

Pour l'instant je tâtonne. J'arrive à supprimer l'intitulé B de l'a xe mais
l'espace qu'il occupait reste vide. Donc il y a un grand "trou" entre A e t C
et c'est vraiment pas terrible terrible.

Merci à vous
JBF


Avatar
Modeste
Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la légende.
Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données ou 0)

@+
;o)))

Avatar
JBF
Masquer les colonnes je ne suis pas contre mais existe-il une formule qui
dit que si aucune données dans la colonne alors masquer sinon afficher?
Je souhaite que ça se fasse de façon automatisé que je n'ai plus à
intervenir sur le graphique.
Sinon, bien que n'ayant jamais fait de macro, je vais essayé les solutions
proposées en amont

JBF


"Modeste" a écrit dans le message de news:

Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la légende.
Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données ou 0)

@+
;o)))





Avatar
JB
Sub masquecol()
[A:G].EntireColumn.Hidden = False
For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then
c.EntireColumn.Hidden = True
End If
Next c
End Sub

Sub demasquecol()
[A:G].EntireColumn.Hidden = False
End Sub

JB


On 7 sep, 12:03, "JBF" wrote:
Masquer les colonnes je ne suis pas contre mais existe-il une formule qui
dit que si aucune données dans la colonne alors masquer sinon afficher?
Je souhaite que ça se fasse de façon automatisé que je n'ai plus à
intervenir sur le graphique.
Sinon, bien que n'ayant jamais fait de macro, je vais essayé les soluti ons
proposées en amont

JBF

"Modeste" a écrit dans le message de news:




Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la légend e.
Dans le premier cas toutes mes colonnes comportent au moins une donn ée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs null es
apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données ou 0)

@+
;o)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
rthompson
Bonjour JB

Pourrais-tu m'expliquer la deuxième ligne de ce code
J'ai aussi (pas pour graphique) des lignes à cacher
Et je suis preneur pour des astuces diverses

Je ne vois pas ce fait

For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then

Est-ce que la plage part de B1 jusqu'à IV1 (mais ne tient pas compte des
colonnes vide? (XlToleft)

A bientôt

Et merci

Rex ;-))) )))



"JB" a écrit dans le message de news:


Sub masquecol()
[A:G].EntireColumn.Hidden = False
For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then
c.EntireColumn.Hidden = True
End If
Next c
End Sub

Sub demasquecol()
[A:G].EntireColumn.Hidden = False
End Sub

JB


On 7 sep, 12:03, "JBF" wrote:
Masquer les colonnes je ne suis pas contre mais existe-il une formule qui
dit que si aucune données dans la colonne alors masquer sinon afficher?
Je souhaite que ça se fasse de façon automatisé que je n'ai plus à
intervenir sur le graphique.
Sinon, bien que n'ayant jamais fait de macro, je vais essayé les solutions
proposées en amont

JBF

"Modeste" a écrit dans le message de news:




Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la légende.
Dans le premier cas toutes mes colonnes comportent au moins une donnée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nulles
apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données ou 0)

@+
;o)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Avatar
JB
Bonjour,

http://cjoint.com/?jhqjWJxjjI

On regarde pour chaque colonne si toutes les cellules sont vides (sur
4 lignes)

A B C
1 Janvier Fev Mars
2 10 0 12
3 20 0 11
4 12 0 14
5 13 0 11

La colonne B sera masquée

JB

On 7 sep, 13:34, "rthompson" wrote:
Bonjour JB

Pourrais-tu m'expliquer la deuxième ligne de ce code
J'ai aussi (pas pour graphique) des lignes à cacher
Et je suis preneur pour des astuces diverses

Je ne vois pas ce fait

For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then

Est-ce que la plage part de B1 jusqu'à IV1 (mais ne tient pas compte des
colonnes vide? (XlToleft)

A bientôt

Et merci

Rex ;-))) )))

"JB" a écrit dans le message de news:


Sub masquecol()
[A:G].EntireColumn.Hidden = False
For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then
c.EntireColumn.Hidden = True
End If
Next c
End Sub

Sub demasquecol()
[A:G].EntireColumn.Hidden = False
End Sub

JB

On 7 sep, 12:03, "JBF" wrote:



Masquer les colonnes je ne suis pas contre mais existe-il une formule q ui
dit que si aucune données dans la colonne alors masquer sinon affiche r?
Je souhaite que ça se fasse de façon automatisé que je n'ai plus à
intervenir sur le graphique.
Sinon, bien que n'ayant jamais fait de macro, je vais essayé les solu tions
proposées en amont

JBF

"Modeste" a écrit dans le message de news:


Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes q ui
contiennent des valeurs. Dans les cas où les valeurs sont nulles d ans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la lége nde.
Dans le premier cas toutes mes colonnes comportent au moins une donn ée
positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs nu lles
apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, S ANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bi en
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données o u 0)

@+
;o)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -





Avatar
Rex
Bonsoir et merci

Donc ce n'est pas i v en majescules mais quatre en chiffres romain


Merci et à bientôt

Rex ;-))) )))



"JB" a écrit dans le message de news:

Bonjour,

http://cjoint.com/?jhqjWJxjjI

On regarde pour chaque colonne si toutes les cellules sont vides (sur
4 lignes)

A B C
1 Janvier Fev Mars
2 10 0 12
3 20 0 11
4 12 0 14
5 13 0 11

La colonne B sera masquée

JB

On 7 sep, 13:34, "rthompson" wrote:
Bonjour JB

Pourrais-tu m'expliquer la deuxième ligne de ce code
J'ai aussi (pas pour graphique) des lignes à cacher
Et je suis preneur pour des astuces diverses

Je ne vois pas ce fait

For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then

Est-ce que la plage part de B1 jusqu'à IV1 (mais ne tient pas compte des
colonnes vide? (XlToleft)

A bientôt

Et merci

Rex ;-))) )))

"JB" a écrit dans le message de news:


Sub masquecol()
[A:G].EntireColumn.Hidden = False
For Each c In Range("B2", [IV1].End(xlToLeft))
If Application.CountA(c.Offset(1, 0).Resize(4)) = 0 Then
c.EntireColumn.Hidden = True
End If
Next c
End Sub

Sub demasquecol()
[A:G].EntireColumn.Hidden = False
End Sub

JB

On 7 sep, 12:03, "JBF" wrote:



Masquer les colonnes je ne suis pas contre mais existe-il une formule
qui


dit que si aucune données dans la colonne alors masquer sinon afficher?
Je souhaite que ça se fasse de façon automatisé que je n'ai plus à
intervenir sur le graphique.
Sinon, bien que n'ayant jamais fait de macro, je vais essayé les
solutions


proposées en amont

JBF

"Modeste" a écrit dans le message de news:


Bonsour® JBF avec ferveur ;o))) vous nous disiez :

Je souhaite que mon graphique représente uniquement les colonnes qui
contiennent des valeurs. Dans les cas où les valeurs sont nulles dans
toute une colonne, je souhaite que le graphique ne tienne alors pas
compte de cette colonne ni sur l'axe des abscisses ni dans la
légende.




Dans le premier cas toutes mes colonnes comportent au moins une
donnée




positive donc il faut qu'elles apparaissent toutes sur le graphique.
Jusque là c'est bon!

En revanche dans le deuxième cas je ne veux pas que les valeurs
nulles




apparaissent. Pour çà je mets une formule qui remplace les 0 par
#N/A. De plus, et c'est la que j'ai besoin de vous, je souhaite aussi
que l'intitulé de ma colonne, ici "B", disparaisse de mon graph, SANS
LAISSER D'ESPACE VIDE, de l'axe des abscisses et de la légende. Bien
entendu si une valeur redevenait positive il faut que tout
réapparaisse.


Il suffit de masquer les colonnes concernées(c-a-d sans données ou 0)

@+
;o)))- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des
messages précédents -



- Afficher le texte des messages précédents -