Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter, et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute? (sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous ! ;-)
Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter, et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute? (sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous ! ;-)
Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter, et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute? (sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous ! ;-)
Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,
il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" a écrit dans le
message news:Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)
Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,
il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" <nospam-hfrankdangel@frog-sa.com> a écrit dans le
message news: uDgeOGfWEHA.2340@TK2MSFTNGP09.phx.gbl...
Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)
Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,
il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" a écrit dans le
message news:Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)
Slt' Hervé !!!!!
Ben j'ai rien compris à ton code !!!! ;-) ;-)
Je te réexplique ce que je veux, car c'est assez simple, mais dur à
expliquer....
Ma macro à été créée sous VBA, la passer en VB n'est pas un souci.....
Ce que je veux, c'est en faire un executable, pour que ma macro soit
independante à part entière, qu'elle puisse etre installer sur n'importe
quel poste, sans VB, et quelle puisse traiter n'importe quel fichier....
Pour l'instant, c'est un CommandButton qui lance la macro dans le classeur
ou à été créée la Macro, et dans celui ci seulement....
Ce que je veux, c'est que au lancement de l' *.exe, une boite de dialogue
s'affiche me demandant de selectionner le fichier excel à traiter..., puis
une fois celui selectionner puis valider, que ma macro de depart s'execute
normalement, comme si je l'avait installer dans ce fichier Excel....
M'as tu compris ???
Ps: je n'ai pas compris l'histoire de la BDR, car l'exe va etre mis sur
plusieur poste, donc pour moi le chemin des fichiers à traiter ne sera
jamais fixe
Ce que je veux en fait, c'est créer une application à part entiere.... ;-)
je te joins le code de la macro au cas ou... :
API servant au calcul du temps (à supprimer après test avec ce qui va avec)
Private Declare Function GetTickCount Lib "Kernel32" () As Long
'en mettant :
'1 TextBox nommé TxtMaxi pour le nombre de lignes
'1 TextBox nommé TxtPas pour le pas
'1 Label nommé LblMaxi pour indiquer le champ Maxi
'1 Label nommé LblPas pour indiquer le champ Pas
'1 Label nommé LblAffiche pour le pourcentage
'dont les propriétés :
'"BackStyle" = 0 (transparent)
'"ForeColor" = &H00FFFFFF& (Blanc)
'"Left" comme LblProgress
'"Width" de façon à pouvoir afficher 100%
'"Caption" = "100%" puis après avoir réglé Width supprimer
'1 CommadButton nommé CmdOK pour lancer la proc
'1 CommadButton nommé CmdAnnuler
'et la barre de progression nommée LblProgress
'avec False à la propriété "Visible" car elle sera
'affichée en temps voulue
'Sub demarre()
'progbar1.Show
'End Sub
Private Sub CmdAnnuler_Click()
Unload Me
End Sub
Private Sub CmdOK_Click()
Dim ProgressLargeur
Dim I As Long, J As Long
Dim Debut As Long
Debut = GetTickCount()
With progbar1
.TxtMaxi.Visible = False
.TxtPas.Visible = False
.LblMaxi.Visible = False
.LblPas.Visible = False
.Label1.Visible = True
.Label2.Visible = True
.Label3.Visible = True
.Label4.Visible = False
.CmdAnnuler.Visible = False
.CmdOK.Visible = False
.LblProgress.Visible = True
End With
ProgressLargeur = progbar1.LblProgress.Width
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual ' si applicable
LblProgress.Width = 0
' si une valeur non numérique dans les textbox
On Error GoTo Fin
ParTableau TxtMaxi, TxtPas, ProgressLargeur
Fin:
If Err.Number <> 0 Then
MsgBox "Valeurs non numériques !"
End If
Unload progbar1
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic ' si applicable
MsgBox Format((GetTickCount() - Debut) / 1000, "0" & " Mise en forme 00
secondes")
End Sub
Sub ParTableau(Maxi As Long, _
Pas As Integer, _
ByVal ProgressLargeur As Integer)
Dim Tbl
Dim I As Long
Dim J As Integer
Dim K As Long
Dim Colonne As Long
With Worksheets("Feuil1")
'recherche la dernière colonne
Colonne = .Cells.Find("*", .[A1], xlFormulas, , _
xlByColumns, xlPrevious).Column
'rempli le tableau
Tbl = .Range(.Cells(1, 1), .Cells(Maxi, Colonne))
End With
'déplace les valeurs dans le tableau
For I = 1 To Maxi Step Pas
K = K + 1
For J = 1 To Colonne
Tbl(K, J) = Tbl(I, J)
Next J
LblProgress.Width = (I / Maxi) * ProgressLargeur
progbar1.Caption = CInt((I / Maxi) * 100) & "% effectués"
With LblAffiche
.Caption = CInt((I / Maxi) * 100) & "%"
If LblProgress.Width < .Width Then
.Left = LblProgress.Left
Else
.Left = LblProgress.Width / 2
End If
End With
DoEvents
Next I
'colle le résultat dans la feuille
With Worksheets("Feuil2")
.Range(.Cells(1, 1), .Cells(K, Colonne)) = Tbl
Worksheets("Feuil2").Select
Cells.Select
Selection.Columns.AutoFit
Selection.Rows.AutoFit
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range("A1").Select
End With
Erase Tbl
End Sub
Merci d'avance pour ton aide précieuse !!!!
"Hervé" a écrit dans le message de
news:Oe$Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" a écrit dans le
message news:Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
etque une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachantqu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)
Slt' Hervé !!!!!
Ben j'ai rien compris à ton code !!!! ;-) ;-)
Je te réexplique ce que je veux, car c'est assez simple, mais dur à
expliquer....
Ma macro à été créée sous VBA, la passer en VB n'est pas un souci.....
Ce que je veux, c'est en faire un executable, pour que ma macro soit
independante à part entière, qu'elle puisse etre installer sur n'importe
quel poste, sans VB, et quelle puisse traiter n'importe quel fichier....
Pour l'instant, c'est un CommandButton qui lance la macro dans le classeur
ou à été créée la Macro, et dans celui ci seulement....
Ce que je veux, c'est que au lancement de l' *.exe, une boite de dialogue
s'affiche me demandant de selectionner le fichier excel à traiter..., puis
une fois celui selectionner puis valider, que ma macro de depart s'execute
normalement, comme si je l'avait installer dans ce fichier Excel....
M'as tu compris ???
Ps: je n'ai pas compris l'histoire de la BDR, car l'exe va etre mis sur
plusieur poste, donc pour moi le chemin des fichiers à traiter ne sera
jamais fixe
Ce que je veux en fait, c'est créer une application à part entiere.... ;-)
je te joins le code de la macro au cas ou... :
API servant au calcul du temps (à supprimer après test avec ce qui va avec)
Private Declare Function GetTickCount Lib "Kernel32" () As Long
'en mettant :
'1 TextBox nommé TxtMaxi pour le nombre de lignes
'1 TextBox nommé TxtPas pour le pas
'1 Label nommé LblMaxi pour indiquer le champ Maxi
'1 Label nommé LblPas pour indiquer le champ Pas
'1 Label nommé LblAffiche pour le pourcentage
'dont les propriétés :
'"BackStyle" = 0 (transparent)
'"ForeColor" = &H00FFFFFF& (Blanc)
'"Left" comme LblProgress
'"Width" de façon à pouvoir afficher 100%
'"Caption" = "100%" puis après avoir réglé Width supprimer
'1 CommadButton nommé CmdOK pour lancer la proc
'1 CommadButton nommé CmdAnnuler
'et la barre de progression nommée LblProgress
'avec False à la propriété "Visible" car elle sera
'affichée en temps voulue
'Sub demarre()
'progbar1.Show
'End Sub
Private Sub CmdAnnuler_Click()
Unload Me
End Sub
Private Sub CmdOK_Click()
Dim ProgressLargeur
Dim I As Long, J As Long
Dim Debut As Long
Debut = GetTickCount()
With progbar1
.TxtMaxi.Visible = False
.TxtPas.Visible = False
.LblMaxi.Visible = False
.LblPas.Visible = False
.Label1.Visible = True
.Label2.Visible = True
.Label3.Visible = True
.Label4.Visible = False
.CmdAnnuler.Visible = False
.CmdOK.Visible = False
.LblProgress.Visible = True
End With
ProgressLargeur = progbar1.LblProgress.Width
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual ' si applicable
LblProgress.Width = 0
' si une valeur non numérique dans les textbox
On Error GoTo Fin
ParTableau TxtMaxi, TxtPas, ProgressLargeur
Fin:
If Err.Number <> 0 Then
MsgBox "Valeurs non numériques !"
End If
Unload progbar1
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic ' si applicable
MsgBox Format((GetTickCount() - Debut) / 1000, "0" & " Mise en forme 00
secondes")
End Sub
Sub ParTableau(Maxi As Long, _
Pas As Integer, _
ByVal ProgressLargeur As Integer)
Dim Tbl
Dim I As Long
Dim J As Integer
Dim K As Long
Dim Colonne As Long
With Worksheets("Feuil1")
'recherche la dernière colonne
Colonne = .Cells.Find("*", .[A1], xlFormulas, , _
xlByColumns, xlPrevious).Column
'rempli le tableau
Tbl = .Range(.Cells(1, 1), .Cells(Maxi, Colonne))
End With
'déplace les valeurs dans le tableau
For I = 1 To Maxi Step Pas
K = K + 1
For J = 1 To Colonne
Tbl(K, J) = Tbl(I, J)
Next J
LblProgress.Width = (I / Maxi) * ProgressLargeur
progbar1.Caption = CInt((I / Maxi) * 100) & "% effectués"
With LblAffiche
.Caption = CInt((I / Maxi) * 100) & "%"
If LblProgress.Width < .Width Then
.Left = LblProgress.Left
Else
.Left = LblProgress.Width / 2
End If
End With
DoEvents
Next I
'colle le résultat dans la feuille
With Worksheets("Feuil2")
.Range(.Cells(1, 1), .Cells(K, Colonne)) = Tbl
Worksheets("Feuil2").Select
Cells.Select
Selection.Columns.AutoFit
Selection.Rows.AutoFit
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range("A1").Select
End With
Erase Tbl
End Sub
Merci d'avance pour ton aide précieuse !!!!
"Hervé" <hmsilve@wanadoo.fr> a écrit dans le message de
news:Oe$V5ciWEHA.4032@TK2MSFTNGP11.phx.gbl...
Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,
il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" <nospam-hfrankdangel@frog-sa.com> a écrit dans le
message news: uDgeOGfWEHA.2340@TK2MSFTNGP09.phx.gbl...
Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
et
que une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachant
qu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)
Slt' Hervé !!!!!
Ben j'ai rien compris à ton code !!!! ;-) ;-)
Je te réexplique ce que je veux, car c'est assez simple, mais dur à
expliquer....
Ma macro à été créée sous VBA, la passer en VB n'est pas un souci.....
Ce que je veux, c'est en faire un executable, pour que ma macro soit
independante à part entière, qu'elle puisse etre installer sur n'importe
quel poste, sans VB, et quelle puisse traiter n'importe quel fichier....
Pour l'instant, c'est un CommandButton qui lance la macro dans le classeur
ou à été créée la Macro, et dans celui ci seulement....
Ce que je veux, c'est que au lancement de l' *.exe, une boite de dialogue
s'affiche me demandant de selectionner le fichier excel à traiter..., puis
une fois celui selectionner puis valider, que ma macro de depart s'execute
normalement, comme si je l'avait installer dans ce fichier Excel....
M'as tu compris ???
Ps: je n'ai pas compris l'histoire de la BDR, car l'exe va etre mis sur
plusieur poste, donc pour moi le chemin des fichiers à traiter ne sera
jamais fixe
Ce que je veux en fait, c'est créer une application à part entiere.... ;-)
je te joins le code de la macro au cas ou... :
API servant au calcul du temps (à supprimer après test avec ce qui va avec)
Private Declare Function GetTickCount Lib "Kernel32" () As Long
'en mettant :
'1 TextBox nommé TxtMaxi pour le nombre de lignes
'1 TextBox nommé TxtPas pour le pas
'1 Label nommé LblMaxi pour indiquer le champ Maxi
'1 Label nommé LblPas pour indiquer le champ Pas
'1 Label nommé LblAffiche pour le pourcentage
'dont les propriétés :
'"BackStyle" = 0 (transparent)
'"ForeColor" = &H00FFFFFF& (Blanc)
'"Left" comme LblProgress
'"Width" de façon à pouvoir afficher 100%
'"Caption" = "100%" puis après avoir réglé Width supprimer
'1 CommadButton nommé CmdOK pour lancer la proc
'1 CommadButton nommé CmdAnnuler
'et la barre de progression nommée LblProgress
'avec False à la propriété "Visible" car elle sera
'affichée en temps voulue
'Sub demarre()
'progbar1.Show
'End Sub
Private Sub CmdAnnuler_Click()
Unload Me
End Sub
Private Sub CmdOK_Click()
Dim ProgressLargeur
Dim I As Long, J As Long
Dim Debut As Long
Debut = GetTickCount()
With progbar1
.TxtMaxi.Visible = False
.TxtPas.Visible = False
.LblMaxi.Visible = False
.LblPas.Visible = False
.Label1.Visible = True
.Label2.Visible = True
.Label3.Visible = True
.Label4.Visible = False
.CmdAnnuler.Visible = False
.CmdOK.Visible = False
.LblProgress.Visible = True
End With
ProgressLargeur = progbar1.LblProgress.Width
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual ' si applicable
LblProgress.Width = 0
' si une valeur non numérique dans les textbox
On Error GoTo Fin
ParTableau TxtMaxi, TxtPas, ProgressLargeur
Fin:
If Err.Number <> 0 Then
MsgBox "Valeurs non numériques !"
End If
Unload progbar1
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic ' si applicable
MsgBox Format((GetTickCount() - Debut) / 1000, "0" & " Mise en forme 00
secondes")
End Sub
Sub ParTableau(Maxi As Long, _
Pas As Integer, _
ByVal ProgressLargeur As Integer)
Dim Tbl
Dim I As Long
Dim J As Integer
Dim K As Long
Dim Colonne As Long
With Worksheets("Feuil1")
'recherche la dernière colonne
Colonne = .Cells.Find("*", .[A1], xlFormulas, , _
xlByColumns, xlPrevious).Column
'rempli le tableau
Tbl = .Range(.Cells(1, 1), .Cells(Maxi, Colonne))
End With
'déplace les valeurs dans le tableau
For I = 1 To Maxi Step Pas
K = K + 1
For J = 1 To Colonne
Tbl(K, J) = Tbl(I, J)
Next J
LblProgress.Width = (I / Maxi) * ProgressLargeur
progbar1.Caption = CInt((I / Maxi) * 100) & "% effectués"
With LblAffiche
.Caption = CInt((I / Maxi) * 100) & "%"
If LblProgress.Width < .Width Then
.Left = LblProgress.Left
Else
.Left = LblProgress.Width / 2
End If
End With
DoEvents
Next I
'colle le résultat dans la feuille
With Worksheets("Feuil2")
.Range(.Cells(1, 1), .Cells(K, Colonne)) = Tbl
Worksheets("Feuil2").Select
Cells.Select
Selection.Columns.AutoFit
Selection.Rows.AutoFit
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
Range("A1").Select
End With
Erase Tbl
End Sub
Merci d'avance pour ton aide précieuse !!!!
"Hervé" a écrit dans le message de
news:Oe$Salut Hervé,
Si tu veux faire un exécutable (.exe) en VBA, oublie ce n'est pas
possible,il te faut le faire avec VB, mais c'est peut être le cas, non ? sinon en
.vbs ?
Un exemple avec le chemin du classeur à ouvrir stocké dans la base de
registre à cette adresse :
HKEY_CURRENT_USERSoftwareVB and VBA Program Settings
Il te faut donner des noms plus explicites pour le dossier, la clé et la
valeur (la donnée de la valeur étant le chemin du classeur)
Sub SavoirQuelClasseur()
Dim Ouvrir As Boolean
Dim Chemin As String
Chemin = GetSetting("Dossier", "NomClé", "NomValeur", "")
If Chemin = "" Then
Ouvrir = Application.Dialogs(xlDialogOpen).Show
If Ouvrir = True Then
Chemin = ActiveWorkbook.FullName
SaveSetting "Dossier", "NomClé", "NomValeur", Chemin
Else
MsgBox "Vous devez indiquer le classeur à ouvrir !"
End If
Else
Workbooks.Open Chemin
End If
End Sub
Si tu veux autre chose reviens avec un peu plus d'explications.
Hervé.
"Hervé Frank-Dangel" a écrit dans le
message news:Bonjour tt le monde !!!!
Voilà, mon prog est à présent terminé, il me reste plus qu'a compiler la
macro pour en faire un executable, car cette macro va etre utiliser sur
plusieur poste.
Le but est que au lancement de l'executable, une boite de dialogue
s'affiche, demandant le chemin à parcourir jusqu'au fichier à traiter,
etque une fois ce fichier selectionné, ma macro s'execute normalement.
Est-ce que le fichier doit s'ouvrir pour que la macro s'execute?
(sachantqu'il faut que le fichier excel traiter s'affiche de toute façon après
traitement...)
Quel est la procédure à suivre pour cette Userform de selection ?
Me suis-je bien fais comprendre ??? ;-)
Merci d'avance @ tous, c'est un plaisir de progresser parmis vous !
;-)