Excel 2007 : Problème validation formulaire VBA

Bonjour,

J'ai dans le formulaire le TextBox4 qui m'indique le nom saisie dans le TextBox1 (je voudrais aussi indiquez le premier caractère du TexteBox2 avec un espace entre les 2). Je sais pas comment on fait.

Le TextBox 4 est fait pour avoir le nom de la feuille, j'aimerais savoir si il y a possibilité de faire une recherche dans les noms de feuille afin de ne pas avoir ni erreur VBA ni 2 feuilles portant le même nom si ce cas ce présente avoir un message demandant de changer de nom de feuille.

Pour la date, j'ai 3 TextBox mais n'est pas vraiment opérationnel, en effet j'ai un message d'alerte lorsque la date est mauvaise mais quand je fais ok, je reviens au formulaire, mais la nouvelle feuille se créer quand même à ce moment plutôt que seulement quand la date est bonne.

Et pour finir un code qui déverrouille pour la structure (qui est bloquer par un code) pour que la macro se fasse et reverrouille la structure à la fin.

Merci à celui peut m'expliquer comment résoudre mon soucis.

11vba-nono-copie.xlsm (50.20 Ko)

Bonjour,

Le textbox4 est composé du contenu de textbox1 et le premier caractère du contenu du textbox2.

Mais ensuite, est-ce que ce contenu du textbox4 est définitif ? (sous réserve qu'il n'y ait pas déjà une feuille portant ce nom)

S'il y a déjà une feuille portant ce nom, est-ce que le nom sera modifié directement dans textbox4 ou il faudra le modifier via les textbox1 ou textbox2 ?

ric

Le textbox4 est composé du contenu de textbox1 et le premier caractère du contenu du textbox2.

Mais ensuite, est-ce que ce contenu du textbox4 est définitif ? (sous réserve qu'il n'y ait pas déjà une feuille portant ce nom)

S'il y a déjà une feuille portant ce nom, est-ce que le nom sera modifié directement dans textbox4 ou il faudra le modifier via les textbox1 ou textbox2 ?

Oui je voudrais que le TextBox4 contienne l’intégralité du TextBox1 et le premier caractère du TextBox2. Si il y a une déjà une feuille portant ce nom, il faut un message d'alerte afin que l'utilisateur modifie le nom directement dans le TextBox4 jusqu'à ce que le TextBox4 contienne un nom différents des feuilles.

Bonjour,

Un résumé >

  • textbox4 = textbox1 + un souligné + premier caractère du textbox2
  • textbox4 = le nom de la nouvelle feuille
  • si textbox4 existe déjà, un message nous avise pour correction
  • l'on peut changer le contenu de textbox4 manuellement

- la date > il ne reste que le textbox8 > un double clic appelle un calendrier

  • les feuilles sont protégées (verrouillées) le mot de passe est "MP" (sensible à la casse)
  • voir le contenu de "ThisWorkbook" et à la fin du bouton "Valider"
  • pour modifier le mot de passe, c'est dans "ThisWorkbook" et à la fin du bouton "Valider"

Un essai ...

ric

  • textbox4 = textbox1 + un souligner + premier caractère du textbox2
  • textbox4 = le nom de la nouvelle feuille
  • si textbox4 existe déjà, un message nous avise pour correction
  • l'on peut changer le contenu de textbox4 manuellement

Très bien le coup de l'alerte du nom feuille déjà existante, il y aurais possibilité de mettre l'alerte qu'au moment de la validation (sans enlever la couleur si erreur) ? Je souhaiterais que le TextBox4 ne puisse pas contenir d'espace (il y a des formules qui recherche le nom des feuilles et ne prend pas en compte les espaces)

- la date > il ne reste que le textbox8 > un double clic appelle un calendrier

Je souhaite que l'utilisateur puisse écrire la date de plusieurs façon (comme dans mon tableau du départ) car la date à renseigner peut être très loin, de plus cela ne se mets pas dans la cellule I1.

Bonjour,

Pour le souligner dans le textbox4, il se met automatiquement.

Si la personne tape le nom dans le textbox1 et mets une espace; comment veux-tu gérer cela ? > L'on met un tiret, un souligner ou l'on colle les mots ensembles ?

Pour la date, est-ce que tu as remarqué que dans le calendrier, l'on peut naviguer par année et par mois ?

Si l'on retourne à 3 textbox, la gestion des erreurs est plus complexe.

ric

Pour le souligner dans le textbox4, il se met automatiquement.

Si la personne tape le nom dans le textbox1 et mets une espace; comment veux-tu gérer cela ? > L'on met un tiret, un souligner ou l'on colle les mots ensembles ?

Je souhaite que le tiret _ du 8 soit à la place des espaces, espace interdit dans le nom des feuilles ce qui est actuellement possible.

Quand on valide une deuxième fois le formulaire et que le Textbox4 est non conforme, la macro créer quand même des feuilles intitulé FEUILLE TYPE A COPIER (2), FEUILLE TYPE A COPIER (3), comment faire pour bloquer complètement la macro pour qu'il y est en aucun cas le nom d'une feuille en double, ni même avec le (2). Les utilisateurs n'aurons pas accès à la suppression de feuille ni au modification créer par le formulaire.

Bonjour,

Je te reviens demain ... mardi ...

ric

Bonjour,

Je suis reparti sur la base de ton fichier soumis au début.

Le mot de passe des feuilles est toujours "MP".

Un essai ...

ric

Merci,

Il n'y a plus d'erreur en cas de nom de feuille identique, le message se met bien tant qu'un nom soit identique ===> PARFAIT

Pour la date il y a un message d'erreur d'exécution 'I3' : incompatibilité de type.

Et y a t'il moyens d'empêcher de supprimer certaines feuille ("RECAP", "FEUILLE TYPE A COPIER" et d'autres sur mon classeur final ) ou un code pour déverrouiller le blocage de la structure du tableau ?

Bonjour,

Je viens de démarrer une autre machine afin de tester ton fichier sous Excel 2007.

Désolé, mais je n'ai aucune erreur.

Dans la macro du bouton "VALIDER" du UserForm ...

Mets un point d'arrêt ( touche F9 ) sur la ligne (celle colorée dans l'image ci-jointe)

Puis continue ligne par ligne avec la touche F8.

À quelle ligne, y a-t-il y une erreur ?

mymy

ric

X = DateAMJ(TextBox10, TextBox9, TextBox8) ' compile la date

Ensuite quand on appuis sur F8

Function DateAMJ(ByVal xa, ByVal xm, ByVal xj) As Variant

'retourne la date ou une erreur

Const MoisA = "janv,févr,mars,avr,mai,juin,juil,août,sept,oct,nov,déc"

Dim an, Nbr As Boolean

DateAMJ = CVErr(xlErrNA)

On Error Resume Next

If xa = "" Or xm = "" Or xj = "" Then Exit Function

Nbr = ((xa Like "#") Or (xa Like "##") Or (xa Like "####"))

Nbr = Nbr And ((xm Like "#") Or (xm Like "##")) And ((xj Like "#") Or (xj Like "##"))

If Not Nbr Then Exit Function

an = Int(Val(xa))

If an < 0 Then

Exit Function

ElseIf an < 100 Then

an = 2000 + an

ElseIf an < 1900 Then

Exit Function

End If

DateAMJ = CDate(Join(Array(xj, Split(MoisA, ",")(CInt(xm) - 1), an)))

End Function

Bonjour,

Oui, mais encore ... sur quelle ligne survient le message d'erreur ?

ric

C'est les ligne écrite en rouge.

Désolé je sais pas comment joindre des images en png.

Bonjour,

Essai ceci ...

Au début de cette macro, il y a la ligne Dim X As Date change là pour Dim X .

Enregistre et tester à nouveau .

ric

Effectivement je n'est plus de code erreur vba, mais cela me créer quand même la feuille

Bonjour,

Je ne comprends pas ton message précédent.

C'est tout bon ... zou pas ?

Si zou pas, essai de m'expliquer en détail le souci persistant.

ric

Quand la date n'est pas bonne, je plus de code erreur vba, mais cela me créer quand même la feuille alors que cela devrais pas.

Bonjour

Comment la date peut-elle ne pas être bonne ?

Le soucis est-il sur le jour, le mois ou l'année ?

ric

Bonjour

Comment la date peut-elle ne pas être bonne ?

Le soucis est-il sur le jour, le mois ou l'année ?

Quand on rentre le 30 02 2020 par exemple, cela me créer quand même la nouvelle feuille.

Rechercher des sujets similaires à "2007 probleme validation formulaire vba"