Microsoft 365 vba N° automatique

974RE

XLDnaute Occasionnel
Bonjour à tous,
Je reviens vers vous afin de trouver de l'aide.
MonUserForm Devis comporte un N° Automatique qui devrait afficher l'année en cours &001 pour le premier devis, puis afficher l'année en cours & OO2 (2021001,ext...).
Je n'arrive pas à le faire faire.
J'ai également un autre problème sur le même UserForm "Devis", grace à votre aide j'ai pu faire effacer les ligne du tableau Devis, au moment où je quitte le l'UserForm, mais si je quitte l'UserForm alors que le tableau "Devis" est vide, il beug.
Pourriez-vous m'aider à résoudre ces deux problèmes?
Avec tous mes remerciements.
 

Pièces jointes

  • Essai CL - Copie.xlsm
    119 KB · Affichages: 28
Solution
@974RE,
A l'ouverture de votre fichier, si on clique sur Devis, on a cette erreur :
1613830341364.png

Elle vient du fait que dans l'initialisation du userform Devis votre ligne :
VB:
Me.TextBox6 = "yyyy-" & Right(Cells(Ligne, 1), Len(Cells(Ligne, 1)) - 4) + 1
est erronée car vous ajoutez 1 à une chaine de caractères.
si vous rectifiez avec la solution du post #5, alors l'erreur disparait.

974RE

XLDnaute Occasionnel
BrunoM45 bonjour,
Merci d'avoir pris de votre précieux temps pour me répondre.
En premier lieu, mon USF devis non seulement il s'ouvre, mais je peux aussi lui faire faire ce que j'ai voulu hormis les deux problème que je rencontre, et cela grâce à laide du Forum.
J'ai réussi à régler tout seul le problème du beug qui se produisait lorsque je fermais l'USF , et cela grâce à ce que j'ai pu apprendre avec le Forum.
Je suis novice en matière de VBA, j'ai 61 ans et j'essai d'apprendre quelque chose de nouveau, pas pour le fun, mais parce que j'ai toujours admiré ceux et celles qui jongle avec ce langage qui permet de faire tant de choses époustouflantes qui facilite drôlement la vie à des vieux comme moi qui n'ont pas eu cette chance d'être formé. C'est pourquoi je me suis lancé. Grace au forum, j'ai déjà pu "créer" quelques petits outils qui me facilite grandement la vie tous les jours dans mon activité professionnel. J'en retire une grande fierté.
Je me suis aujourd'hui lancé dans un projet un peu plus élaboré pour améliorer encore ce que j'ai mis en place.
Je m'efforce d'utiliser les différentes aides qui sont mis à ma disposition par Excel.
Quand je ne trouve pas de solution, j'appelle à l'aide le forum.
J'avais cru comprendre que le forum permettais à celles et ceux qui savent de venir en aide à ceux qui n'ont pas "Le SAVOIR".
Ici, il est manifeste que vous n'avez pas l'intention de m'aider. Je ne comprends pas pourquoi vous avez perdu de votre précieux temps pour me répondre.
J'attends de l'aide, pas que l'on me donne des leçons!
Lorsque j'ouvre une discussion, si vous ne voulez pas m'aider, passer votre chemin, et laissez-moi avec mon problème. C'est si simple!
Je vous remercie du temps que vous m'avez accorder.
 
C

Compte Supprimé 979

Guest
Bonjour,

Pour répondre à la fin de votre post que je ne comprends pas 🤔

Non seulement nous sommes en république démocratique, donc je peux vous répondre comme bon me semble et de plus je ne vous donnais aucune leçon... Votre imagination est bien trop débordante 😂

Ceci dit vous demandiez de l'aide, chose que j'ai souhaité faire, mais à l'ouverture de votre USF devis j'ai un tas de messages d'erreur, d'où ma question 🙄

Pour conclure, bonne chance avec ce genre de comportement 😱
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour 974, Bruno,
Pour la gestion du N° de devis, essayez cela :
VB:
If Ligne = 2 Then
    Me.TextBox6 = Year(Date) & "-001"
Else
    Me.TextBox6 = Year(Date) & "-" & Right("00" & Val(Right(Cells(Ligne, 1), 3)) + 1, 3)
End If
Les Right et Val sont nécessaires car on extrait des chiffres d'un texte qu'il faut reconvertir en nombre avant d'ajouter 1, puis de le reconvertir en chaine pour l'associer à l'année.
 

974RE

XLDnaute Occasionnel
BrunoM45,
Je suis désolé de la réponse que je vous ai faites, et je m'en excuse. Mais j'avais reçu précédemment un post qui était extrêmement désagréable. J'ai réagit à votre poste car j'y avais cru voir de nouveau un ".....ne vous lancez pas dans un projet qui vous dépasse.....".
Sincèrement je regrette d'avoir été vif sur mon post.
Je vous promet de faire preuve de plus de discernement si vous me donnez l'occasion de nouveau de vous lire.
Pour répondre à votre question, à l'ouverture de mon USF Devis, chez moi il s'ouvre correctement, et je peux saisir les données et les mettre là où je le souhaitais. Il est vrai que j'ai tenté de rajouter l'effacement des ligne du devis à la fermeture de l'USF ce qui pourrait être les messages d'erreurs que vous me signaler. Il y a peut-être d'autres erreurs que je n'ai pas encore vu. C'est pour cela que j'ai besoin de l'aide du Forum.
De m'avoir répondu après mon post montre bien que vos intentions étaient louables.
Je vous renouvelle mes sincères excuses!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
@974RE,
A l'ouverture de votre fichier, si on clique sur Devis, on a cette erreur :
1613830341364.png

Elle vient du fait que dans l'initialisation du userform Devis votre ligne :
VB:
Me.TextBox6 = "yyyy-" & Right(Cells(Ligne, 1), Len(Cells(Ligne, 1)) - 4) + 1
est erronée car vous ajoutez 1 à une chaine de caractères.
si vous rectifiez avec la solution du post #5, alors l'erreur disparait.
 

974RE

XLDnaute Occasionnel
Bonjour 974, Bruno,
Pour la gestion du N° de devis, essayez cela :
VB:
If Ligne = 2 Then
    Me.TextBox6 = Year(Date) & "-001"
Else
    Me.TextBox6 = Year(Date) & "-" & Right("00" & Val(Right(Cells(Ligne, 1), 3)) + 1, 3)
End If
Les Right et Val sont nécessaires car on extrait des chiffres d'un texte qu'il faut reconvertir en nombre avant d'ajouter 1, puis de le reconvertir en chaine pour l'associer à l'année.
Bonjour Sylvanu,
Merci beaucoup pour le code. Je n'aurais jamais trouvé tout seul. J'ai compris, je crois le principe.
Un code avec des explications c'est ce qui me convient dans mes efforts d'apprentissage.
C'est ce qui me permet de progresser et de reproduire si besoin, même si je sais que je referais probablement encore des erreurs.
Merci milles fois.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le problème vient du typage naturel d' XL. Un nombre est un nombre, une chaine une chaine.
Si vous avez une textbox dans lequel vus rentrez 1234, alors 1234 est du text non un nombre.
Donc là on prend Cells(Ligne, 1) qui est une chaine, on extrait les 3 caractères de droite.
On le transforme en nombre avec Val.
On ajoute la chaine de caractères "00", car on veut 3 caractères pour le N° mais XL met le minimum de caractères dans un nombre, donc 22 s'écrit 22. Pour avoir 3 caractères dans une chaine je rajoute "00".
Donc j'obtiens "0022", et à ce moment là je tronque à 3 caractères, donc j'obtiens la chaine "022", que je peux rajouter au numéro de l'année sans y toucher puisqu'il fait 4 caractères. D'où le :
VB:
 Me.TextBox6 = Year(Date) & "-" & Right("00" & Val(Right(Cells(Ligne, 1), 3)) + 1, 3)
 

Discussions similaires

Réponses
3
Affichages
292

Statistiques des forums

Discussions
314 656
Messages
2 111 607
Membres
111 218
dernier inscrit
Jean-Kev