Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/09/2011, 10h12   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 70
Points : 13
Points : 13
Par défaut Rendre visibles des lignes groupées

Bonjour,

Dans un ppt, je colle des graphes venant d'un fichier Excel 2010 (xlsm avec macro), que je colle avec l'option "Paste Link". le but étant de mettre à jour facilement ces graphes en fonction de l'évolution du fichier excel.

Or à chaque fois que j'ouvre le ppt et qu'il me demande si je souhaite mettre à jour les liens, je clicke OK et il finit par me dire:
"the linked file was unavailable and can't be updated."

Or le fichier ppt et excel n'ont ni été bougé, ni renommé!

Aprés différents test, j'ai remarqué que cela est du au fait que , mes graphes sont inclut dans des lignes qui sont groupés dans Excel.
Par conséquent, si les lignes sont dégroupés et donc visible, pas de soucis, les grahes sont bien mis à jour en automatique dans le PPT.
Par contre si, les lignes sont groupés et donc les graphes non visibles, la mise à jour ne fonctionne pas.

Par conséquent, je voudrais écrire une macro qui me dégroupe, qui rend visible ligne groupées en faite (pas réellement dégroupé car je vais garder la structure du fichier excel).
En effet, j'ai une bonne cinquante de graphes dans plusieurs feuilles et regroupés sous plusieurs "gruupes" par feuille. Et je voudrais donc automatiser une ouverture automatique de toutes ces lignes pour l'update du ppt.

J'ai tenté d'enregistrer cette action, mais rien n'est capturé.
Existe-t-il une commande VBA pour réaliser cette opération dans tout le fichier?

Par avance merci
yzf-r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 10h34   #2
Membre expérimenté
 
Inscription : juillet 2008
Messages : 757
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 757
Points : 545
Points : 545
Bonjour,

Tu peux réafficher toute les lignes d'un groupe avec le code suivant
Code :
Sheets(1).Cells.EntireRow.Hidden = False
J'ignore si on peut le faire directement pout tout un classeur mais si j'avais besoin de ca, je ferrai une petite boucle

Code :
1
2
3
4
5
6
7
8
9
Sub demasquer()
'on compte le nombre d'onglet dans le classeur actif
nbrpage = Worksheets.Count
'ensuite on passe sur chaque onglet
For i = 1 To nbrpage
    'et on démasque toutes les cellules de l'onglet ou on se trouve
    Sheets(i).Cells.EntireRow.Hidden = False
Next i
End Sub
Il faudra surveiller que la macro est bien dans le bon classeur au moment ou elle essaye de tourne (si tu démasques dans le classeur ou tu colle les données et pas dans le classeur source, ca n'ira pas)
EmmanuelleC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 10h55   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2010
Messages : 70
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 70
Points : 13
Points : 13
Merci

C'est exactement ce qu'il me fallait.

Par contre, l'inverse n'est pas génial
Code :
Sheets(i).Cells.EntireRow.Hidden = True
me cache tout!
J'espérai qu'il ne fasse que refermer les groupes, mais en fait, il cache toutes les lignes

Pas grave, je dois juste préciser qu'il ne faut pas sauvegarder le fichier aprés mise à jour côté PPT.

A moins que tu connaisses une autre procédure?
yzf-r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 11h22   #4
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,
Citation:
... mais en fait, il cache toutes les lignes
Il fait exactement ce que lui demande ta ligne de code

Tu est en mode plan à la base ?

vois peut-être ces mots clefs dans l'aide VBA :
  • Range.Subtotal, méthode / expression.Subtotal(GroupBy, Function, TotalList, Replace, PageBreaks, SummaryBelowData)
  • AutoOutline
  • Outline.ShowLevels, méthode
  • etc..


cordialement,

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/09/2011, 12h01   #5
Membre expérimenté
 
Inscription : juillet 2008
Messages : 757
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 757
Points : 545
Points : 545
j'ai jetté un petit coup d'oeil (pour me coucher moins bete ce soir )

Si tu sais a quel niveau tu dois les remettre apres tu peux utiliser ca
Code :
ActiveSheet.Outline.ShowLevels RowLevels:=1
le 1 a la fin correspond aux chiffres en haut a gauche des groupes (1 est le moins déplié)

Si par exemple tu as 3 niveaux et que tu veux replier a moitié, tu mets
Code :
ActiveSheet.Outline.ShowLevels RowLevels:=2
EmmanuelleC est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h38.


 
 
 
 
Partenaires

Hébergement Web