Comment créer une macro qui peut s'effectuer sur pls fichiers

Résolu/Fermé
ttr125 - 7 juin 2013 à 11:00
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 25 juin 2013 à 23:49
Bonjour,

Voici mon petit problème je voudrais créer une macro de type « générale » si on peut dire ... une macro qui pourrait s'utiliser dès que j'ouvre n'importe quel fichier, car quand je créer ma macro celle-ci marche mais me met une erreur N°9 cette erreur est que je n'utilise pas la macro avec le bon fichier c'est-à-dire avec le fichier où j'ai créé cette macro ... comment faire ? j'ai effectué plusieurs teste, mais là je sèche..

La macro que je veux créer est que si j'ouvre diffèrent fichier. tRd cette macro me transforme ce fichier en xls et me trace une courbe..
J'espère avoir été claire dans mon explication merci de votre aide


<config>Windows xp / Internet Explorer 10.0<//> excel 2000
A voir également:

17 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 12/06/2013 à 17:27
Bonjour,
La procédure sur un classeur de base ou un classeur de macro personnelle.
Je pense que votre code comporte une erreur, par contre il est impossible de vous aider sans l'entier de ce code.


Salutations.
Le Pingou
0
Voici le code que j'ai obtenu

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 07/06/2013 par alliance concept
'
' Touche de raccourci du clavier: Ctrl+q
'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1))
Range("F:F,H:H,J:J").Select
Range("J1").Activate
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Range("F:F,H:H,J:J").Select, PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub


je sais que mon problème vient du Range mais je sais pas comment l'écrire merci
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
13 juin 2013 à 17:31
Bonjour,
Merci.
Eh bien cette procédure s'applique uniquement au classeur actif et la feuille active (note : donc depuis le classeur ou la procédure est lancé.
Dans le code on ne trouve pas qu'elle est la feuille qui contient les données pour le graphique et non plus sûr qu'elle feuille est affichée le dit graphique.
Sans savoir exactement ce que vous voulez réaliser en détail, c'est impossible dans dire plus.

0
Bonjour, tous d'abords merci pour vos réponses.

Je suis arrivée à corrigé l'erreur 9 ,mais maintenant j'ai l'erreur 1004 .... Ce que je veux faire exactement est simple je vais récupérer des informations d'un automate en fichier .trd (comme un .txt ) donc voilà un exemple de ce que je récupéré 12525325;2566352;16-05-2013;14:51:36;MAIN.volt;3.000000;Main.puissance;1.000000;MAIN.tension;3.0000;

Donc ma macro sépare a chaque point virgule affecte chaque info dans les colonnes A,B,C.. (ex:A:12525325 B:2566352 ect..) ensuite je sélectionne les colonnes qui m'intéressent pour le tracé de mes courbes et je créer un graphique ,mais le problème est que mon tableau peut aller de 1à5 ou de 1à.... et cela je ne peux pas le savoir donc je ne sais pas comment faire pour généraliser mon code pour qu'il accepte quel que soit le nombre de ligne

j'espère avoir été assez claire malgré tous merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
14 juin 2013 à 23:40
Bonjour,
Merci pour les informations.
Cependant ou se trouve les données converties ( de .trd en .xls) ... !
Sur le même classeur que le graphique .... ?
Décrire exactement ce que vous réalisez manuellement.... !

0
Bonjour, oui la conversion se trouve sur le même classeur que le graphique je le convertie ensuite je créer mon graphe mais le problème exacte que j'ai est la taille de mon trd qui varie et quand je créer une macro elle se fait avec la taille que je lui est donner mais comment lui dire quel peut varier tous le tant ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
16 juin 2013 à 23:03
Bonjour,
Supposé que la première ligne de données et la [1]
Trouver la dernière ligne de la colonne [F] avec le code qui suit
deli= Cells(Rows.Count, 6).End(xlUp).Row 
qui remplace cette ligne {Range("F:F,H:H,J:J").Select}

Et votre code pour la source données du graphique devient :
......
Source:= Range("F1:F" & deli & ",H1:H" & deli & ",J1:J" & deli)


0
ttr125 Messages postés 5 Date d'inscription lundi 17 juin 2013 Statut Membre Dernière intervention 25 juin 2013
17 juin 2013 à 09:05
Bonjour, pour commencer merci de ton aide malheureusement cela ne marche pas je n'est même plus mes courbes :( voici le code actuel :

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 07/06/2013 par alliance concept
'
' Touche de raccourci du clavier: Ctrl+q
'
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1))
deli = Cells(Rows.Count, 6).End(xlUp).Row
Range("J1").Activate
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Range("F1:F" & deli & ",H1:H" & deli & ",J1:J" & deli).Select, PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub

je vais essayer de vous joindre mon fichier .trd
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
17 juin 2013 à 10:02
Bonjour,
Avec le fichier et le classeur si vous le désirez.
Le code fonctionne parfaitement chez moi.
Note dans le code que j'ai transmis il n'y a pas de [.Select] pour l'objet Range ....

0
ttr125 Messages postés 5 Date d'inscription lundi 17 juin 2013 Statut Membre Dernière intervention 25 juin 2013
17 juin 2013 à 10:22
j'ai essayé avec et sans .select mais ça ne marche toujours pas par contre je n'arrive pas a joindre mes fichiers comment puis je faire ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
17 juin 2013 à 10:28
Bonjour,
Plus d'un fichier, alors les compresser [ZIP ou RAR] et mettre le fichier compressé sur https://www.cjoint.com/ et poster le lien.

0
ttr125 Messages postés 5 Date d'inscription lundi 17 juin 2013 Statut Membre Dernière intervention 25 juin 2013
17 juin 2013 à 10:39
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
17 juin 2013 à 11:39
Bonjour,
Avec votre procédé, il est nécessaire d'avoir le nom de la feuille de données.
J'ai adapté votre code et c'est bon pour moi.
Votre fichier : https://www.cjoint.com/?3FrlMWBDt93

0
ttr125 Messages postés 5 Date d'inscription lundi 17 juin 2013 Statut Membre Dernière intervention 25 juin 2013
17 juin 2013 à 13:50
Merci beaucoup pour ton aide Le Pingou ça marche nickel heureusement que tu étais la ;-)
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
17 juin 2013 à 16:01
Merci, de rien.
Salutations.
Le Pingou
0
ttr125 Messages postés 5 Date d'inscription lundi 17 juin 2013 Statut Membre Dernière intervention 25 juin 2013
25 juin 2013 à 15:31
Salut ,
j'ai actuellement modifier mon code Vb et tous marche pour le mieux encore merci de ton aide une petite question j'ai rajouté la date et l'heures sur mon graphique tous marches pour le mieux mais j'ai une question tous d'abords voila mon code :

Sub Consommation_éléctrique()
'
' Consommation_éléctrique Macro
' Macro enregistrée le 25/06/2013 par alliance concept création courbe consommation éléctrique
'
' Touche de raccourci du clavier: Ctrl+w
' *** récupérer le nom de la feuille source des données
sh = ActiveSheet.Name
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1))
deli = Cells(Rows.Count, 3).End(xlUp).Row
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets(sh).Range("C1:C" & deli & ",D1:D" & deli & ",F1:F" & deli & ",H1:H" & deli & ",J1:J" & deli), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""volt"""
ActiveChart.SeriesCollection(2).Name = "=""puissance"""
ActiveChart.SeriesCollection(3).Name = "=""tension"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Conso"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Consommation éléctriques"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub


est ma question est que si dans le fichier que je j'avais posté je n'est pas les colonnes H et J il me met une erreur est ce que je peut standardiser mon code ?

j'espère que je suis claire merci de votre aide
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 juin 2013 à 17:31
Bonjour,
Je viens de tester votre code et il n'y a aucun message d'erreur.
Où est donc votre problème.... ?

0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
25 juin 2013 à 23:49
Bonjour,
Voici une proposition légèrement modifiée, une feuille pour fichier (trd) et une pour les données utilisées pour le graphique.
Proposition : https://www.cjoint.com/?3FzxXh5q6Al

0