zougloukata
Messages postés3Date d'inscriptionvendredi 6 juillet 2012StatutMembreDernière intervention31 juillet 2012
-
25 juil. 2012 à 15:44
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
31 juil. 2012 à 12:00
Bonjour à tous,
J'essaie depuis un moment de générer un graphique automatique à chaque ouverture d'un classeur..
Mon problème est que j'arrive bien à chercher à partir d'un GetOpenFileName les fichiers dont j'ai besoin,mais lorsque je les sélectionne et que je récupère la plage de données que je souhaite,je n'arrive pas à créer un graphique..je vous poste mon code,peut-être me suis-je tromper dans ma procédure..
Ah oui,j'aimerais lancer ce code en macro personnelles;on m'a parlé de module et classe où je devais placer mon code,mais je ne m'y retrouve plus...
Je vous prie de bien vouloir me dépanner
Je vous remercie
Voici le code :
Private Sub CommandButton1_Click()
'@desactivation des alertes et du raffraichissement
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'@suppression des anciennes feuilles et de l'ancien graphique
On Error Resume Next
For Each ws In Worksheets
If ws.Name <> "Graph" Then ws.Delete
Next
For Each chObj In Sheets("Graph").ChartObjects
chObj.Delete
Next chObj
'@initialisation
Dim oWB As Workbook 'la variable qui permet de gerer la feuille du fichier
Dim Filter, Caption As String
Dim last_row As Integer
'@Ouverture de la fenetre de selection de fichier
Filter = "Text files (*.meb),*.meb"
Caption = "Please Select a File "
SelectedFile = Application.GetOpenFilename(Filter, , Caption) 'recupere le chemin du fichier
Cells(1, 3).Value = "Graphique de " & Mid(SelectedFile, InStrRev(SelectedFile, "") + 1, Len(SelectedFile))
Set oWB = Workbooks.Open(SelectedFile) 'ouvre le fichier selectionné
'@copie des données
ThisWorkbook.Sheets.Add
ThisWorkbook.ActiveSheet.Name = "Data"
ThisWorkbook.ActiveSheet.Move After:=Sheets("Graph")
oWB.ActiveSheet.Cells.Copy
ThisWorkbook.Sheets("Data").Paste
oWB.Close False 'ferme le classeur sans sauvegarder les changements
With ThisWorkbook.ActiveChart.Parent
.Left = 30
.Top = 70
.Width = 720
.Height = 400
End With
'@activation des alertes et du raffraichissement
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Excusez moi,pour les couleurs
Apprendre une chose aujourd'hui me rendra meilleur demain ;)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 juil. 2012 à 21:20
Je ne sais pas si je comprends bien l'idée de macro personnelle, mais si tu veux créer une macro complémentaire qui te permettrait d'ajouter un bouton dans le programme Excel pour rouler une macro, tu peux créer cette macro dans un nouveau classeur, dans un module standard et tu sauvegardes le fichier sous... avec l'extension XLA ou XLAM selon la version d'Excel que tu possèdes. Tu trouveras l'extension dans le bas de la liste de choix d'extension presqu'à la fin.
Une autre méthode que j'aime moins, c'est de créer un fichier "personnel". Quand tu crées une macro en utilisant l'outil d'enregistrement d'Excel, tu as le choix de l'endroit où tu veux la sauvegarder. Si tu choisis un fichier personnel, Excel te créera ce fichier la première fois.
zougloukata
Messages postés3Date d'inscriptionvendredi 6 juillet 2012StatutMembreDernière intervention31 juillet 2012 31 juil. 2012 à 11:02
Bonjour MPI,
Je te remercie pour ta réaction rapide.
Je n'arrive toujours pas à gérer cette macro...Que veux-tu dire exactement par spécifier le programme pour la source?
Je te remercie
Apprendre une chose aujourd'hui me rendra meilleur demain ;)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 31 juil. 2012 à 12:00
Oublie la Source. Je n'avais pas remarqué que l'autre fichier était déjà fermé...
Par contre, je vérifierais si last_row est bien ce que tu penses
Après cette ligne
last_row = ThisWorkbook.Sheets("Data").UsedRange.Rows.Count
mets ceci pour vérifier
MsgBox last_row
UsedRange n'est pas toujours fiable...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI