Lancer un macro excel a partir d'un bouton sous VBA

anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013 - 19 févr. 2013 à 01:00
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013 - 22 févr. 2013 à 02:42
Bonjour,
j'ai fait un macro pour convertir un fichier excel en un fichier kml dans le but de realiser un outil de suivi qui permet de suivre la performance du réseau à travers les KPIs (indicateurs clé de performance) qui sont les informations trouvé dand le fichier excel!mon macro marche bien mais quand je vais une copie de cette macro dans visual basic pour l'affecter à un bouton il ne marche pas et me pose plusieurs problemes comme "ActiveWorkbook" et "worksheet".....
j'attend vos aides et merci bien

14 réponses

Utilisateur anonyme
19 févr. 2013 à 02:14
Bonjour,

Il va falloir attendre le devin de service, ou un extrait suffisant du code avec la ligne qui cause problème plus quelques lignes avant et quelques lignes après. Et aussi le ou les messages d'erreur. Sinon, c'est malheureusement impossible de répondre.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 févr. 2013 à 07:22
Bonjour,
1) je plussoie cmarcotte (que je salue). Ton "exposé" n'en est pas un compréhensible.
2)
plusieurs problemes comme "ActiveWorkbook" et "worksheet".....

Sans savoir ce dont il s'agit et sans voir ton code, je ne peux qu'appeler ton attention sur :
-- la différence entre ActiveWorkBook (qui concerne le classeur dont la fenêtre est en premier plan, premier plan perdu si n'importe quelle autre fenêtre passe à ce 1er plan) et ThisWorkBook (le classeur dans lequel s'exécute le code de la macro active)
-- la différence entre la collection WorkSheets (collection des feuilles) et le type d'objet worksheet. On ne se réfère pas à une feuille par le mot Worksheet, mais par un article de la collection WorkSheets.
Mais, sans ton code, je ne peux que supposer et t'inviter à lire les rubriques de ton aide VBA concernant ActiveWorkBook, ThisWorkBook, WorkSheets et WorkSheet.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
19 févr. 2013 à 21:13
bon voici mon macro c'est pour realiser un outil de suivi qui permet de suivre la performance du réseau il ca marche quand je l'execute avec excel comme macro mais quand je le copie dans visual basic il me pose plusieurs erreurs et ca marche pas parmis les erreurs "Feuil1" et "ActiveWorkbook" et quand j'essaye avec la syntaxe "worksheet" pour lire le classeur "Feuil1" il me pose un erreur aussi avec "worksheet" je sais pas c'est quoi le probleme mais je souhaite que vous m'aide puisque j'ai besoin d'un bouton pour executer ce macro sur un tel fichier excel et merci

Sub Macro_kml()
'programme en visual basic

    ActiveWorkbook.Save
    
'********************declaration des variable****************************
Dim text As String
Dim sitename As String
Dim cellName As String
Dim date_t As String
Dim BSC As String

Dim coord_x As String
Dim coord_y As String

text =   ""
'**************entête du fichier test.kml **********************
x1 = "<?xml version=""1.0"" encoding=""UTF-8""?>"
x2 = "<kml xmlns=""http://earth.google.com/kml/2.2"">"
x3 = "<Document>"
x4 = "<name>anwer.kml</name>"
text = text + (x1 + x2 + x3 + x4)
'*********************le corps du fichier (se qui est  variable) ****************
 For i = 2 To 5

BSC = Feuil1.Cells(i, 1)         'recupération des valeur du tableau
sitename = Feuil1.Cells(i, 2)    ' pour chaque ligne on récupère le contenu de la colonne
cellName = Feuil1.Cells(i, 3)    'cette exemple é fait que pour six colonne
date_t = Feuil1.Cells(i, 4)      '5 BTS (5 ligne)

coord_x = Feuil1.Cells(i, 15)
coord_y = Feuil1.Cells(i, 16)

'*********identification de style de google earth***********

x5 = "<Style id=""style1""> <color>" + couleur + "</color><href>C:\Users\DELL\Documents/star.png</href> </Style>"
x51  = "<Style id= ""style2""> <color>ffff0000</color><href>C:\Users\DELL\Documents/star.png</href> </Style>"
x52  = "<StyleMap id=""StyleMap""><key>normal</key><styleUrl>#style1</styleUrl>

<key>highlight </key><styleUrl>#style2</styleUrl>

</StyleMap>"
x6 = "<Folder>"
x7 = "<name>AllTunisia_Candidat</name>"
x8 = "<open>1</open>"
'**********extraction des valeurs depuis le tableau EXCEL***********
x9 = "<name>" + sitename + "</name><styleUrl>#StyleMap</styleUrl>"
x10 = "<description><![CDATA[  aaa  |GTU210 |\"
x11  = \"----
Nom |" + sitename + " |\"
x13 =  \"----
 BSC  |" + BSC + " |\"
x14  = \"----
SITENAME |" + sitename + " |\"
x15 =  \"----
 CELLNAME  |" + cellName + " |\"
x16  = \"----
DATE |" + date_t + " |\"

x17 = "
 ]]>" + msg + "

"

x18 = "</description><coordinates>" + coord_x + "," + coord_y + "</coordinates>

"
x19 = "</Folder>"
text = text + (x5 + x51 + x52 + x6 + x7 + x8 + x9 + x10 + x11 + x13 + x14 + x15 + x16 + x17 + x18 + x19)
Next i
text = text + "</Document></kml>"
'************la concaténation des lignes  é contenu dans la variable text ***********
'************** text sera envoyer vers un fichier "test.kml"  sous c:\test.kml*************
Open "C:\test.kml" For Output As #1 ' ****Ouvre le fichier en écriture.****
Print #1, text   '**** Ecrit le texte dans le fichier.*****
'Close [1]
'********pour la mise a jour automatique sur google ,
'***il faut fair un fichier lien sur google earth  qui pointe sur le fichier test.kml****


End Sub

0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 févr. 2013 à 21:23
- Remplace donc déjà ActiveWokBook (qui correspond à la fenêtre active) par ThisWortBook
- évite les "+" pour concaténer des chaînes de caractères ! "&" est plus propre
-
t me pose plusieurs problemes comme "ActiveWorkbook" et "worksheet".....

je ne vois nulle par le mot souligné dans ton code !
-
Open "C:\test.kml" For Output As #1 ' ****Ouvre le fichier en écriture.****
Print #1, text '**** Ecrit le texte dans le fichier.*****
'Close [1]

Ah bon ? tu ne le fermes pas, donc ? !
Et on ne ferme pas ainsi, mais par close #1
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

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

Posez votre question
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
20 févr. 2013 à 00:10
tu sais comment executer un macro d'aprés excel ?? il ca marche avec moi ce code mais si je travaille sur visual basic 2010 express il ne marche pas , par exemple j'ai recu cette erreur "'ActiveWorkbook' is not declared. It may be inaccessible due to its protection level" aussi quand je le remplace avec 'ThisWortBook' il apparait le meme msg "'ThisWortBook' is not declared. It may be inaccessible due to its protection level"

pour le classeur j'ai recu cette erreur "'Feuil1' is not declared. It may be inaccessible due to its protection level" je sais pas comment declarer une classeur d'un fichier excel dans VBA!!merci pour votre attention
0
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
20 févr. 2013 à 00:24
voici un apercu de ce que je vois sous mon visual basic 2010 express
http://www.hostingpics.net/viewer.php?id=267382Capt55.jpg
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 févr. 2013 à 04:36
Ton problème n'est donc pas VBA, mais celui de son pilotage depuis VB.Net
Pour piloter, il te faut avoir créé, sous VB.Net, les objets Excel utilisés.
Soit par exemple objappli l'objet application à piloter ===>>
pour te référer à l'objet machin de cette application objappli, on n'écrit pas directement (comme on le ferait depuis VBA/Excel) :
machin
mais
objappli.machin
utilise le moteur de recherche de ce forum. Il te permettra d'y trouver de nombreuses discussions et codes pour piloter Excel depuis VB.Net


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
20 févr. 2013 à 21:39
j'ai pas compris est ce que tu peux me donner un exemple svp ? et merci bien
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 févr. 2013 à 21:42
j'ai pas compris est ce que tu peux me donner un exemple svp ? et merci bien

utilise le moteur de recherche de ce forum. Il te permettra d'y trouver de nombreuses discussions et codes pour piloter Excel depuis VB.Net

Picétou.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
20 févr. 2013 à 22:04
ucfoutuest ce que tu peux m'aider a changer mon code puisque je suis debutant en VBA et j'arrive pas a trouver la solution ou a trouver 'objappli.machin ' sur votre forum..J'apprécirai votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2013 à 05:36
ucfoutuest ce que tu peux m'aider a changer mon code puisque je suis debutant en VBA et j'arrive pas a trouver la solution ou a trouver 'objappli.machin ' sur votre forum..J'apprécirai votre aide

Objappli et machin sont deux noms que j'ai arbitraitrement choisis ! J'aurais pu choisir toto.titi !
Ce n'est pas sur ces deux noms, que tu dois chercher, mais sur l'essence même de ton propos : "piloter excel", "automatiser Excel" ... par exemple !
Et cette recherche-là ne demande aucune connaissance en VBA. Juste un peu de bon sens.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2013 à 05:40
Et je te répète que ton problème, tel qu'exposé, n'est pas une difficulté VBA, mais une difficulté VB.Net


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 févr. 2013 à 06:57
Tu vas vite comprendre === >>
Ta question VBA était donc
lancer un macro excel a partir d'un bouton sous VBA

et ta macro était : Macro_kml
soit bouton le nom du bouton VBA.
voilà comment, sous VBA, serait lancée la macro Macro_kml au clic du bouton nommé bouton :
Private Sub bouton_Click()
Macro_kml
End Sub

Cà, ce serait depuis VBA.
Depuis VB.Net (en pilotage, donc) il te faudrait faire précéder ce code par le nom de la variable objet nécessaire, créée en VB.Net. Et cette approche-là s'appelle le pilotage, ne concerne QUE VB.Net, et s'apprend en VB.Net.
=== >> recherche sur ce forum les codes et discussions relatifs à ce type de pilotage.
Il te faudra créer, sous VB.Net , tous les objets (application Excel, Classeur, Feuille, etc ...) nécessaires.
Voilà !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
anwer86 Messages postés 33 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 19 avril 2013
22 févr. 2013 à 02:42
merci bien pour ton aide je vais essayer encore avec tout ce que tu m'as dis
0
Rejoignez-nous