Dupliquer UserForm

Résolu
Mistral_13200 Messages postés 649 Statut Membre -  
Mistral_13200 Messages postés 649 Statut Membre -
Bonjour à tous,
Avant d’exposer mon problème je souhaiterais présenter mes meilleurs vœux à toute la communauté de CCM.
On me demande de réaliser un classeur pour tenir la comptabilité d’une association. Il y aura une feuille par mois, plus une feuille récapitulative par rubrique et une feuille pour le bilan annuel.
Pour chaque feuille il y aura deux UserForme, un pour les recettes et un autre pour les dépenses.
Je vais utiliser des UserForm assez complexes dans leur composition pour la saisie des différents éléments. Chaque UserForm sera appelé par un simple clic dans une cellule d’une colonne ( recette ou dépense). J’ai fait un classeur teste que vous pouvez télécharger avec ce lien :
http://www.cjoint.com/c/GAdi13CwEYg
Afin de ne pas perdre trop de temps à les recréer je souhaiterais savoir s’il est possible de dupliquer un UserForm :
- Sur une même feuille
- Sur des feuilles différentes
Si oui comment fait-on.
Merci d’avance pour votre aide.
Cordialement.
Mistral
A voir également:

3 réponses

gbinforme Messages postés 15478 Statut Contributeur 4 726
 
Bonjour Mistral_13200 et bonne année à toi,

Un méthode assez simple :
- dans la même session tu ouvres un autre classeur vierge.
- tu sélectionnes ta feuille formulaire et tu la glisse dans le nouveau.
- tu modifies le nom pour le nouveau formulaire
- tu sélectionnes ce userform et tu le glisse dans ton classeur
Tu as tes 2 formulaires dans ton classeur et tu laisse tomber le classeur vierge.

Bonne journée.

PS:
Il y aura une feuille par mois,
Si je peux me permettre, je ne suis pas sûr que se soit la formule la plus judicieuse.
Si tu mets toutes tes écritures dans la même feuille, il sera beaucoup plus simple et performant de faire un (ou des) TCD sur la "feuille récapitulative par rubrique et une feuille pour le bilan annuel".
 Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.  Antoine de Saint-Exupéry
3
Mistral_13200 Messages postés 649 Statut Membre 4
 
Bonjour Gbinform,

Merci pour ta réponse.
J'ai essayé de copier ma feuille et USF dans un autre classeur ça marche.

J'ai réussi à dupliquer l'USF dans le même classeur, j'ai modifié les cellules à surveiller et là j'ai un message d'erreur :
Nom ambigu détecté: Worksheet_SelectionChange

Je ne comprends pas pourquoi, il faut dire que c'est la première fois que j'utilise les USF.

Peux-tu m'éclairer?

Pour ce qui est de n'avoir qu'une seule feuille je vais poser la question au C.A.
Cordialement
Mistral
0
gbinforme Messages postés 15478 Statut Contributeur 4 726
 
Re:

Cela ne vient pas des USF mais tu as créé 2 procédures
Worksheet_SelectionChange
et il te faut inclure le code de la seconde dans la première.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("G3:G20")) Is Nothing Then
    Recette.Show
ElseIf Not Intersect(Target, Range("F3:F20")) Is Nothing Then
    Répense.Show
End If
End Sub
0
Mistral_13200 Messages postés 649 Statut Membre 4 > gbinforme Messages postés 15478 Statut Contributeur
 
Re,

Ca marche parfaitement. Merci à toi.

Une question toute fois, si je souhaitais avoir plus de deux colonnes à surveiller, avec autant d'USF que de colonne Est-ce que je peux écrire ce qui est ci-dessous ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("G3:G20")) Is Nothing Then
Recette.Show
ElseIf Not Intersect(Target, Range("F3:F20")) Is Nothing Then
Dépense.Show
End If

If Not Intersect(Target, Range("E3:E20")) Is Nothing Then
Mode.Show
ElseIf Not Intersect(Target, Range("D3:D20")) Is Nothing Then
Ribrique.Show
End If

End Sub


Ou y a t il une autre manière de faire?

C'est pour ma culture personnelle ...
Mistral
0
gbinforme Messages postés 15478 Statut Contributeur 4 726
 
Re
Cela fonctionne mais pourquoi ne pas continuer ?
Au lieu de
End If

If Not Intersect(Target, Range("E3:E20")) Is Nothing Then
    Mode.Show

Tu mets :
ElseIf Not Intersect(Target, Range("E3:E20")) Is Nothing Then
    Mode.Show
0
Mistral_13200 Messages postés 649 Statut Membre 4
 
Bonjour Gbinforme,

Après avoir testé ma proposition, et après modification, j'étais arrivé à la tienne qui fonctionne parfaitement.

Je vais maintenant pouvoir avancer sur mon projet. Je vais marquer comme résolu cette rubriques mais je reviendrais probablement vers toi plus tard.

Encore merci à toi.

Cordialement.
Mistral
0