Créer programme depuis excel [Résolu]

Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
- - Dernière réponse : stepaustral
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
- 24 juil. 2012 à 18:33
Bonjour à toutes et à tous,

Voilà j'ai un fichier excel avec des macros et des boutons et j'aimerais le convertir en programme VBA.
Est ce possible ?
Merci a tous pour vôtre aide.

Ci joint mon fichier excel

http://stepaustras.free.fr/ImportPT.xls
Afficher la suite 

16 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
En plus le code de mon fichier je sais pas si on peu l'améliorer car il plante surtout quand il ne trouve pas la page et sur excel il passe par IE et sur VB6 je pense qu'on peu faire mieux.

C'est là une autre affaire, totalement indépendante (on ne mélange pas tout ici) du sujet ouvert.
En ce qui concerne VB6 : non : le fait d'utiliser VB6 n'apportera rien de "plus performant". Seul le support des données (Excel à présent - Base de données si VB6) changerait !
Si tu veux traiter les défaut de ton appli VBA, maintenant :
1) ouvre une autrre discussion à ce propos, mais alors dans le thème [u]Langages dérivés > VBA
/u
2) expose les tenant et aboutissants
3) montres-y ton code, mais indenté et mis entre balises code (3ème icône en partant de la droite)
4) signale les lignes d'erreur.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bonjour,

Que voudrais dire :
Voilà j'ai un fichier excel avec des macros et des boutons et j'aimerais le convertir en programme VBA
?
Une application est une application (en soi).
Je ne sais donc pas ce que tu cherches à faire !
En ce qui concerne ton classeur "joint" : je crains fort que rares seront ceux qui prendront le risque de l'ouvrir (dit mille et une fois sur ce forum).
Il t'appartient d'exposer clairement tes tenants et aboutissants. De manière purement technique. Aucun classeur n'est nécessaire pour les exprimer. Juste ton effort d'exposé de tes tenants et aboutissants.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Bonjour a toi,
Mon fichier est sain donc pas de virus mais sans fichier pour voir comment cela fonctionne difficile d'expliquer les macros.

J'aimerais simplement améliorer mon fichier excel sous forme de VB6 je pense qu'il serait plus performant.

Ensuite si vous voulez des détails sur le fichier je peux mettre ici.
J'ai une feuille nommé Accueil avec une cellule ou l'on met une date ensuite deux boutons et j'ai trois modules et un user form

1er module nommé Import voici le code

Option Explicit

Sub LesReunions()
Dim Feuille As String
Dim J As Long
Dim Lgder As Long
Dim WsImp As Worksheet
Dim Cel As Range
Dim Progression As Double
Dim Pas As Double

Set WsImp = Sheets("ImportReunions")

Lgder = Ws.Range("A" & Rows.Count).End(xlUp).Row
Pas = (UserForm1.Label5.Width - 4) / NbTablo

For J = 1 To Lgder
'If J = 10 Then Exit Sub
If InStr(1, Ws.Range("A" & J), LaDate) > 0 Then
Feuille = Left(Ws.Range("A" & J), InStr(1, Ws.Range("A" & J), " -") - 1)
Else
If Ws.Range("B" & J).Hyperlinks.Count 1 And Ws.Range("H" & J) "X" Then
Progression = Progression + Round((100 / NbTablo), 2)
UserForm1.Label2.Caption = Val(UserForm1.Label2.Caption) + 1
UserForm1.Label3.Caption = Progression & "%"
UserForm1.Label4.Width = Val(UserForm1.Label2.Caption) * Pas
UserForm1.Caption = Ws.Range("B" & J).Hyperlinks(1).Address
UserForm1.Repaint

ImportPage "ImportReunions", Ws.Range("B" & J).Hyperlinks(1).Address
'Stop
With WsImp
Set Cel = .Columns("A").Find(what:="Origines", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
.Rows(Cel.Row & ":" & Rows.Count).Delete
Else
MsgBox "Impossible de trouver le marqueur : Origines"
End
End If

Set Cel = .Columns("A").Find(what:="1er", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
.Rows("1:" & Cel.Row - 2).Delete
Else
MsgBox "Impossible de trouver le marqueur : 1er"
End
End If

On Error Resume Next
.Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0

Lgder = .Range("A" & Rows.Count).End(xlUp).Row

If FeuilleExiste(Feuille) = False Then
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = Feuille
End If

With .Range("A1:N" & Lgder)
.Borders.Weight = xlThin
.Copy Destination:=Sheets(Feuille).Range("A" & Rows.Count).End(xlUp).Offset(2, 0)
End With
End With
End If
End If

Next J

End Sub


Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function


2ème module nommé Nettoie voici le code
Option Explicit

Sub Nettoyage()
Dim Cel As Range
Dim Depart As String
Dim LgDep As Long
Dim LgFin As Long
Dim Lgder As Long
Dim Ligne As Long

Application.ScreenUpdating = False

With Ws
' On supprime les lignes jusqu'à la 1ère occurence de la date
Ligne = 1
Do While InStr(1, .Range("A" & Ligne), LaDate) = 0
.Rows(Ligne).Delete
Loop

Lgder = .Range("A" & Rows.Count).End(xlUp).Row

' On cherche la ligne qui est juste après le dernier tableau
' Et on efface de cette ligne jusqu'à la fin de la page
Set Cel = .Columns("A").Find(what:="La base numéro 1 du Turf", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
.Rows(Cel.Row & ":" & Lgder).ClearContents
Else
MsgBox "Impossible de trouver le marqueur : La base numéro 1 du Turf"
End
End If

' Entre chaque titre des réunions et le tableau on efface les lignes
Set Cel = .Columns("A").Find(what:=LaDate, LookIn:=xlValues, lookat:=xlPart)
If Not Cel Is Nothing Then
Depart = Cel.Address
Do
.Rows(Cel.Row + 1 & ":" & Cel.Row + 9).ClearContents
Set Cel = .Columns("A").FindNext(Cel)
Loop While Not Cel Is Nothing And Depart <> Cel.Address
End If

' On efface toutes les lignes avec "fermer"
Set Cel = .Columns("A").Find(what:="fermer", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Depart = Cel.Address
Do
.Rows(Cel.Row).ClearContents
Set Cel = .Columns("A").FindNext(Cel)
Loop While Not Cel Is Nothing
End If

' On supprime toutes les lignes vierges
On Error Resume Next
.Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0

Lgder = .Range("A" & Rows.Count).End(xlUp).Row
End With

End Sub


et 3ème module nommé "Reunions" voici le code

Option Explicit

Sub LesReunions()
Dim Feuille As String
Dim J As Long
Dim Lgder As Long
Dim WsImp As Worksheet
Dim Cel As Range
Dim Progression As Double
Dim Pas As Double

Set WsImp = Sheets("ImportReunions")

Lgder = Ws.Range("A" & Rows.Count).End(xlUp).Row
Pas = (UserForm1.Label5.Width - 4) / NbTablo

For J = 1 To Lgder
'If J = 10 Then Exit Sub
If InStr(1, Ws.Range("A" & J), LaDate) > 0 Then
Feuille = Left(Ws.Range("A" & J), InStr(1, Ws.Range("A" & J), " -") - 1)
Else
If Ws.Range("B" & J).Hyperlinks.Count 1 And Ws.Range("H" & J) "X" Then
Progression = Progression + Round((100 / NbTablo), 2)
UserForm1.Label2.Caption = Val(UserForm1.Label2.Caption) + 1
UserForm1.Label3.Caption = Progression & "%"
UserForm1.Label4.Width = Val(UserForm1.Label2.Caption) * Pas
UserForm1.Caption = Ws.Range("B" & J).Hyperlinks(1).Address
UserForm1.Repaint

ImportPage "ImportReunions", Ws.Range("B" & J).Hyperlinks(1).Address
'Stop
With WsImp
Set Cel = .Columns("A").Find(what:="Origines", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
.Rows(Cel.Row & ":" & Rows.Count).Delete
Else
MsgBox "Impossible de trouver le marqueur : Origines"
End
End If

Set Cel = .Columns("A").Find(what:="1er", LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
.Rows("1:" & Cel.Row - 2).Delete
Else
MsgBox "Impossible de trouver le marqueur : 1er"
End
End If

On Error Resume Next
.Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0

Lgder = .Range("A" & Rows.Count).End(xlUp).Row

If FeuilleExiste(Feuille) = False Then
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = Feuille
End If

With .Range("A1:N" & Lgder)
.Borders.Weight = xlThin
.Copy Destination:=Sheets(Feuille).Range("A" & Rows.Count).End(xlUp).Offset(2, 0)
End With
End With
End If
End If

Next J

End Sub


Function FeuilleExiste(Nom As String) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
On Error GoTo 0
End Function
Commenter la réponse de stepaustral
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Ensuite le premier bouton sur la feuille Accueil est associé a la macro "ImportPagePrincipal"
Et le 2ème bouton est associé a la macro "ImportTableaux"

Voilà et donc j'aimerais convertir ceci en VB6 mais sans qu'il utilise excel.
Commenter la réponse de stepaustral
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Et donc pour utiliser le fichier il faut entrer une date dans la cellule D12 (que l'on pourrais remplacer par un textbox ou autre de préférence une date ultérieur a celle du jour ensuite on clique sur le premier bouton qui importe les résultats de toutes les courses PMU de la date choisi d'ou le faite de prendre une date ultérieur a celle d'aujourd'hui et il créer une feuille Import et ImportReunion en attente que l'on pourrais remplacer par des ouverture de page avec des onglets ou autre a voir.
Ensuite sur la feuille Import on double clique sur la colonne H pour sélectionner les courses qui nous intéresses que j'aimerais à la place des cheks box et ensuite on clique sur le 2ème boutons pour qu'il importe les courses sélectionnées.
Voilà
Commenter la réponse de stepaustral
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Bref : tout est finalement dit là :
Voilà et donc j'aimerais convertir ceci en VB6 mais sans qu'il utilise excel

Il se trouve simplement que VBA n'est pas VB6. VBA (visual basic for application) ne fonctionne qu'avec une application Office (par définition) et ne permet pas de "faire un programme" indépendant de Office.
Rien ne t'empêche de développer sous VB6, mais :
- à condition de posséder l'application VB6.Exe (est-ce le cas ?)
- plus question d'utiliser alors des cellules d'une feuille Excel.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
Quant à :
Mon fichier est sain donc pas de virus
===>>
Sans commentaires ! Tu n'en sais rien ! Tu en as seulement la conviction. Un classeur peut parfaitement transporter une saleté à ton insu ! . Il y a assez eu de discussions à ce sujet pour ne pas y revenir ...


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
J'ai mis toutes les macros donc vous pouvez reconstituer le fichier comme ça pas de virus
Sinon oui j'ai un vieux VB6 mais est il possible de convertir les macros d'excel via VB6 en modifiant quelques lignes ?
Commenter la réponse de stepaustral
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
mais est il possible de convertir les macros d'excel via VB6 en modifiant quelques lignes

Bien évidemment !
Mais (je répète donc) :
plus question d'utiliser alors des cellules d'une feuille Excel

Sauf à "piloter" Excel depuis VB6 et je ne vois alors plus l'intérêt de passer par VB6 !
Je notre à ce propos que l'essentiel de ton application (au demeurant élémentaire) modifie une feuille Excel !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Oui mais justement je ne voudrais pas utiliser excel mais faire autrement évidemment comme mon fichier utilise des feuilles excel il faudrait remplacer par autre chose de VB6 mais je ne sais pas quoi
Commenter la réponse de stepaustral
0
Merci
Tout ce que tu fais avec une feuille Excel devra être reprogrammé avec un datagrid ou un flexgrid. Ton UserForm d'excel va devoir être refait entièrement. Les seuls éléments directement réutilisable sont les éléments du BASIC lui-même, comme les boucles, les fonctions de base et les IF.
Commenter la réponse de Utilisateur anonyme
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Au lieu qu'il me créer les importations dans une feuille excel qu'il me les fasse dans un form ou autre chose enfin je sais pas trop je connais pas bcp VB6 mais pas excel car sinon comme tu dis ça n'aurais aucun sens.
Commenter la réponse de stepaustral
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
enfin je sais pas trop je connais pas bcp VB6

Ben... Comme tu fais actuellement des recherches, suppressions ...
Tu n'échapperas alors pas à l'utilisation d'une base de données, sauf à construire une "usine à gaz", notamment en matière de sauvegarde dezs modifs apportées !
Avant même d'aller plus loin, donc : intéresse-toi à la gestion des bases de données (les codes sources exemples ne manquent pas sur ce forum, qui dispose d'un moteur de recherche). Ce ne sera qu'ensuite, que tu pourras valablement envisager une appli indépendante de Excel (mais dépendante d'une base de données).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
En plus le code de mon fichier je sais pas si on peu l'améliorer car il plante surtout quand il ne trouve pas la page et sur excel il passe par IE et sur VB6 je pense qu'on peu faire mieux.
Commenter la réponse de stepaustral
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
Moi je ne veux pas faire de base de données c'est pas pour conserver ce que j'importe je regarde ensuite je jette ou prend une autre date.
Commenter la réponse de stepaustral
Messages postés
54
Date d'inscription
dimanche 5 janvier 2003
Statut
Membre
Dernière intervention
29 juillet 2012
0
Merci
OK merci ucfoutu je vais faire ça mon fichier est bien juste un bug que j'arrive pas a corriger c'est pour ça je voulais savoir si sur VB6 mon fichier je pensais qu'il aurais mieux fonctionné.
Commenter la réponse de stepaustral