UserForm pour un même process de tri lancé manuellement et automatiquement
2 réponses
fetnat
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur
un bouton.
Je souhaite garder le lancement manuel mais aussi lancer le tri
automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click()
If ValideChamps() = True Then
UF1.Hide
TriQSFeuilles
Unload UF1
End If
End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False
If ValidePF() = True Then
If ValideDF() = True Then
ValideChamps = True
End If
End If
End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then
TriQSFeuilles
End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute
sur ValideChamps().
J'ai remplacé la déclaration Private en Public mais cela ne change rien.
J'aimerai garder la validation des champs réalisée avec les fonctions
dans le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi
que le lancement auto dans une sub en gardant la validation des champs ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
tissot.emmanuel
Bonsoir,
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double Doubler = Nombre * 2 End Function
Dans un module standard:
Sub AppelFonction() MsgBox Doubler(1) End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction() MsgBox UserForm1.Doubler(1) End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés de différents points du projet dans un module standard que dans celui d'un Userform car l'appel à celui-ci provoque son chargement en mémoire (exécution de la procédure Initialize) ce qui peut être pénalisant en terme de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" a écrit dans le message de news: %23rFu%
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un bouton. Je souhaite garder le lancement manuel mais aussi lancer le tri automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click() If ValideChamps() = True Then UF1.Hide TriQSFeuilles Unload UF1 End If End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False If ValidePF() = True Then If ValideDF() = True Then ValideChamps = True End If End If End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then TriQSFeuilles End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute sur ValideChamps(). J'ai remplacé la déclaration Private en Public mais cela ne change rien. J'aimerai garder la validation des champs réalisée avec les fonctions dans le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que le lancement auto dans une sub en gardant la validation des champs ?
Merci pour votre aide
fetnat
Bonsoir,
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en
précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double
Doubler = Nombre * 2
End Function
Dans un module standard:
Sub AppelFonction()
MsgBox Doubler(1)
End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction()
MsgBox UserForm1.Doubler(1)
End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés
de différents points du projet dans un module standard que dans celui d'un
Userform car l'appel à celui-ci provoque son chargement en mémoire
(exécution de la procédure Initialize) ce qui peut être pénalisant en terme
de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" <fetnat@gmail.com> a écrit dans le message de news:
%23rFu%23Y1jHHA.3472@TK2MSFTNGP04.phx.gbl...
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un
bouton.
Je souhaite garder le lancement manuel mais aussi lancer le tri
automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click()
If ValideChamps() = True Then
UF1.Hide
TriQSFeuilles
Unload UF1
End If
End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False
If ValidePF() = True Then
If ValideDF() = True Then
ValideChamps = True
End If
End If
End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then
TriQSFeuilles
End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute
sur ValideChamps().
J'ai remplacé la déclaration Private en Public mais cela ne change rien.
J'aimerai garder la validation des champs réalisée avec les fonctions dans
le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que
le lancement auto dans une sub en gardant la validation des champs ?
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double Doubler = Nombre * 2 End Function
Dans un module standard:
Sub AppelFonction() MsgBox Doubler(1) End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction() MsgBox UserForm1.Doubler(1) End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés de différents points du projet dans un module standard que dans celui d'un Userform car l'appel à celui-ci provoque son chargement en mémoire (exécution de la procédure Initialize) ce qui peut être pénalisant en terme de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" a écrit dans le message de news: %23rFu%
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un bouton. Je souhaite garder le lancement manuel mais aussi lancer le tri automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click() If ValideChamps() = True Then UF1.Hide TriQSFeuilles Unload UF1 End If End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False If ValidePF() = True Then If ValideDF() = True Then ValideChamps = True End If End If End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then TriQSFeuilles End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute sur ValideChamps(). J'ai remplacé la déclaration Private en Public mais cela ne change rien. J'aimerai garder la validation des champs réalisée avec les fonctions dans le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que le lancement auto dans une sub en gardant la validation des champs ?
Merci pour votre aide
fetnat
fetnat
Bonjour,
C'est parfait et l'explication est brillante. J'ai beaucoup appris. Je craignais une limitation à Private dans les Usf.
J'utilise un exemple de tri d'onglet très performant trouvé sur Excelabo, alors je n'ai pas voulu le chambouler.
Mille mercis. Bon dimanche.
fenat
Bonsoir,
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double Doubler = Nombre * 2 End Function
Dans un module standard:
Sub AppelFonction() MsgBox Doubler(1) End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction() MsgBox UserForm1.Doubler(1) End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés de différents points du projet dans un module standard que dans celui d'un Userform car l'appel à celui-ci provoque son chargement en mémoire (exécution de la procédure Initialize) ce qui peut être pénalisant en terme de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" a écrit dans le message de news: %23rFu%
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un bouton. Je souhaite garder le lancement manuel mais aussi lancer le tri automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click() If ValideChamps() = True Then UF1.Hide TriQSFeuilles Unload UF1 End If End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False If ValidePF() = True Then If ValideDF() = True Then ValideChamps = True End If End If End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then TriQSFeuilles End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute sur ValideChamps(). J'ai remplacé la déclaration Private en Public mais cela ne change rien. J'aimerai garder la validation des champs réalisée avec les fonctions dans le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que le lancement auto dans une sub en gardant la validation des champs ?
Merci pour votre aide
fetnat
Bonjour,
C'est parfait et l'explication est brillante.
J'ai beaucoup appris. Je craignais une limitation à Private dans les Usf.
J'utilise un exemple de tri d'onglet très performant trouvé sur
Excelabo, alors je n'ai pas voulu le chambouler.
Mille mercis. Bon dimanche.
fenat
Bonsoir,
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en
précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double
Doubler = Nombre * 2
End Function
Dans un module standard:
Sub AppelFonction()
MsgBox Doubler(1)
End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction()
MsgBox UserForm1.Doubler(1)
End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés
de différents points du projet dans un module standard que dans celui d'un
Userform car l'appel à celui-ci provoque son chargement en mémoire
(exécution de la procédure Initialize) ce qui peut être pénalisant en terme
de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" <fetnat@gmail.com> a écrit dans le message de news:
%23rFu%23Y1jHHA.3472@TK2MSFTNGP04.phx.gbl...
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un
bouton.
Je souhaite garder le lancement manuel mais aussi lancer le tri
automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click()
If ValideChamps() = True Then
UF1.Hide
TriQSFeuilles
Unload UF1
End If
End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False
If ValidePF() = True Then
If ValideDF() = True Then
ValideChamps = True
End If
End If
End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then
TriQSFeuilles
End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute
sur ValideChamps().
J'ai remplacé la déclaration Private en Public mais cela ne change rien.
J'aimerai garder la validation des champs réalisée avec les fonctions dans
le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que
le lancement auto dans une sub en gardant la validation des champs ?
C'est parfait et l'explication est brillante. J'ai beaucoup appris. Je craignais une limitation à Private dans les Usf.
J'utilise un exemple de tri d'onglet très performant trouvé sur Excelabo, alors je n'ai pas voulu le chambouler.
Mille mercis. Bon dimanche.
fenat
Bonsoir,
Tout ce qui est déclaré Public dans un Userform est accessible uniquement en précisant le nom du Userform. Par exemple:
Dans un userform:
Public Function Doubler(Nombre As Double) As Double Doubler = Nombre * 2 End Function
Dans un module standard:
Sub AppelFonction() MsgBox Doubler(1) End Sub
Provoque l'erreur de compilation Sub ou Function non définie
Alors que:
Sub AppelFonction() MsgBox UserForm1.Doubler(1) End Sub
Fonctionne tres bien.
Néanmoins il est en général plus logique de localiser les fonctions appelés de différents points du projet dans un module standard que dans celui d'un Userform car l'appel à celui-ci provoque son chargement en mémoire (exécution de la procédure Initialize) ce qui peut être pénalisant en terme de vitesse voire provoquer des effets indésirables.
Cordialement,
Manu/
"fetnat" a écrit dans le message de news: %23rFu%
Bonsoir,
J'ai un UserForm qui lance un processe de tri d'onglets par un clic sur un bouton. Je souhaite garder le lancement manuel mais aussi lancer le tri automatiquement dans une autre fonctionnalité.
Dans le Usf tout est déclaré en Private.
Sub OKButton_Click() If ValideChamps() = True Then UF1.Hide TriQSFeuilles Unload UF1 End If End Sub
Private Function ValideChamps() As Boolean
ValideChamps = False If ValidePF() = True Then If ValideDF() = True Then ValideChamps = True End If End If End Function
etc.
J'ai copié dans ma macro automatique le bout de code un peu remanié :
If ValideChamps() = True Then TriQSFeuilles End If
mais j'ai une erreur de compilation Sub ou Function non définie. Il bute sur ValideChamps(). J'ai remplacé la déclaration Private en Public mais cela ne change rien. J'aimerai garder la validation des champs réalisée avec les fonctions dans le UserForm.
Si je garde uniquement TriQSFeuilles, ça compile.
Que faut-il déplacer ou déclarer pour avoir le lancement manuel ainsi que le lancement auto dans une sub en gardant la validation des champs ?