Utiliser les infos d'un useform pour créer une feuille

Bonjour forum,

Comme le dit le titre, je souhaiterais créer une feuille dont le nom proviendrait d'infos inscrites d'un useform

j'ai créé un classeur avec 3 feuilles

1-portail (feuille affichée) composée d'un bouton liée à une macro "créer_Jxxx"

=> quand l'utilisateur cliquera sur le bouton de la feuille portail, un useform va apparaitre

2-paramètre (masquée) composées de tableaux de dates

3-déplacement (masquée)= feuille modèle vierge

l'useform a également été créé

la macro se met en action en cliquant sur le bouton présent sur la feuille "portail"

Cette feuille "Jxxxxx" sera une copie de la feuille "déplacement" qui est toujours masquée mais son nom (xxxxx) dépendra des infos de l'useform qui aura été rempli comme suit

1- la date choisie

2- le format de nom qui commencera par J puis selon l'un des 3 choix possibles

2a-annee+n°semaine => ex: J1213-36

2b-format date =>ex: J120905

2c-format annee+n° journée => ex: J1213-01

* le n° de semaine est une formule excel : =NO.SEMAINE(G2;1)

** la date provient directement de l'useform

*** la journée provient de la recherche selon le calendrier adéquat ici 1213 -> =RECHERCHEV(G2;calendrier1213;2)

Si une feuille est déjà créée, et qu'un doublon est en cours de création, je souhaiterais qu'un message prévienne l'utilisateur (valider/annuler) afin qu'il puisse continuer la création (et donc ecraser la 1ère) ou annuler.

Voici en Pj, mon fichier de base v1

Quelqu'un aurait il une idée pour cette macro vba?

merci d'avance pour votre aide

Cordialement

Zbig

Bonjour

J'ai regardé un peu et j'ai une question

Que se passe t'il si l'on rentre une date qui n'est pas présente dans tes calendriers ?

bonjour,

une proposition de macro à insérer dans le code du userform1

Private Sub ok_Click()
If OptionButton1 = True Then
 nomf = "J" & Format(Calendar1.Value, "YYYY") & "-" & WorksheetFunction.WeekNum(Calendar1.Value,1)
ElseIf OptionButton2 = True Then
 nomf = "J" & Format(Calendar1.Value, "YYMMDD")
Else
 nomf = "J" & Format(Calendar1.Value, "YYYY") & "-" & WorksheetFunction.VLookup(Calendar1.Value, Range("calendrier1213"), 2)
End If
ongletexiste = True
On Error GoTo trerr
test = Worksheets(nomf).Range("A1").Value
On Error GoTo 0
If ongletexiste Then
 If MsgBox(nomf & " existe déja, ok pour réutiliser ?", vbYesNo) = vbNo Then Exit Sub
Else
    Sheets("DEPLACEMENT").Copy after:=Sheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = nomf
End If
    ' + suite des choses à faire sur la feuille créée.
    ' ....
Exit Sub
trerr:
ongletexiste = False
Resume Next
End Sub

Bonjour Banzai

Bonjour et merci Banzai et h2so4

Banzai

J'ai regardé un peu et j'ai une question

Que se passe t'il si l'on rentre une date qui n'est pas présente dans tes calendriers ?

effectivement il faut que la date choisie appartiennent à l'un des calendriers présents dans la feuille paramètre.

Les calendriers pourront être évolutifs avec les années mais seront toujours nommés "calendrier"&"aaaa"

où aaaa= 1213; 1314; 1415; 1516 etc...

=> un message du type "la date choisie ne fait pas partie du calendrier" pourrait signaler l'erreur de l'utilisateur.

h2s04

J'ai oublié de signaler que les feuilles créées Jxxx doivent par contre être affichées et pas être masquées

j'ai vu dans ton code que cela fonctionne que pour l'année 1213.

 nomf = "J" & Format(Calendar1.Value, "YYYY") & "-" & WorksheetFunction.VLookup(Calendar1.Value, Range("calendrier1213"), 2)

cela est donc possible que pour les dates comprises entre 1/9/12 et 30/6/13

j'ai copier ton code dans le code useform.

j'ai parfois des bug quand je réalise 2 fois de suite la validation

Enfin, la date choisie doit etre inscrite dans la feuille créée en g2

les infos en d2 et a2 doivent en découler

merci

Zbig

bonsoir,

voici une version corrigée à tester.

Bonjour

merci pour les modifications.

Dans le fichier joint, j'ai ajouté des calendriers fictifs (cf gestionnaire des noms)

Est ce possible de mettre un message d'alerte "La date n'est pas valide (vacances ou fériée)", ou un message du type "la date choisie ne fait pas partie du calendrier"

  • > si elle ne fait pas partie du calendrier de l'année scolaire ,
  • > si elle fait partie du calendrier mais si c'est une date de vacances "vac" ou date fériée "fériée"

merci

Zbig

Bonsoir,

voici

Bonjour

Impeccable; merci.

Il y a cependant un cas qui ne fonctionne pas , le cas "férié";

si je ne me trompe pas, il suffit d'ajouter un case dans le code de l'useform

Case "vac"
 MsgBox "La date n'est pas valide (vacances ou fériée)"
 Exit Sub

est ce exact?

merci encore

Zbig

zbig a écrit :

Bonjour

Impeccable; merci.

Il y a cependant un cas qui ne fonctionne pas , le cas "férié";

si je ne me trompe pas, il suffit d'ajouter un case dans le code de l'useform

Case "vac","ferie"
 MsgBox "La date n'est pas valide (vacances ou fériée)"
 Exit Sub

est ce exact?

merci encore

Zbig

effectivement, je n'avais pas détecté qu'il fallait tester cette valeur. tu peux corriger un ajoutant un case ou corriger comme proposé ci-dessus.

Bonsoir h2soa

Merci, avec une "," c'est plus rapide que d'ajouter un case.

J'ai modifié le nom de la feuille paramètre en calendrir et supprimer les colonnes vides.

J'y ai copié-collé les tableaux de calendriers, j'ai aussi modifié dans le code "paramètre" en "calendrier" et le k=11 en k=1 pour que les calendriers soient pris en compte.

et ça fonctionne

Cependant, je souhaiterais que cette feuille "calendrier" soit toujours masquée mais que l'on puisse y acceder grâce au bouton en page "portail". Et dès qu'on l'a quitte (avec bouton ou non) cette page serait remasquée automatiquement.

J'ai bidouillé un code mais ce n'est pas tiptop.

peux tu y jeter un oeil?

merci

Zbig

bonjour,

ajoute les instructions suivantes, dans le code de la feuille calendrier

rendre la feuille invisible lorsqu'elle est désactivée.

Private Sub Worksheet_Deactivate()
Worksheets("Calendrier").Visible = False
End Sub

Bonjour

impeccable! Merci

Je laisse le fichier en pj.

j'ai une autre demande mais je vais d'abord fermer ce fil.

Cordialement

Zbig

Rechercher des sujets similaires à "utiliser infos useform creer feuille"