Microsoft 365 Incrémenter un numéro sur un formulaire

Delphes

XLDnaute Nouveau
Bonjour,
Je travaille dans un théatre, je suis totalement débutante en VBA, et je souhaite créer un fichier excel pour mon directeur artistique de façon à ce qu'il ait le cout fauteuil d'un spectacle en entrant un certain nombre d'information.
Pour ce faire, et parce qu'il a peur des tableaux avec trop de colonnes, je lui ai créé un formulaire en regardant des tutos sur youtube et en farfouillant dans le forum.
Les informations saisies dans le formulaire seront recopiées dans une feuille de calcul, et à partir de là je ferai d'autres feuilles pour calculer les frais annexes, puis une feuille finale très simplifiée sur laquelle il aura juste le cout fauteuil.
Pour ce faire, il faut que chaque formulaire ait un numéro unique, parce que toutes les données des feuilles suivantes seront fléchées sur ce numéro, via la fonction recherchev.
Pour l'instant j'ai office 365, mais je pense que ça ne va pas durer, ce pourquoi je n'envisage pas tout de suite d'utiliser recherchex
J'ai cherché partout, je n'ai rien trouvé qui me convienne.
Auriez vous des idées?
Merci d'avance.
 

Pièces jointes

  • Devis spectacles.xlsm
    36.9 KB · Affichages: 18

Delphes

XLDnaute Nouveau
Merci, ça marche super.
Sauf que je n'ai rien compris. J'ai fait un copier coller, mais je serais incapable de le refaire.
Est ce que tu pourrais m'expliquer la syntaxe stp?

Voilà ce que j'ai copié dans vba.

Private Sub UserForm_Initialize()
Dim DL%
Dim Wd As Worksheet
Set Wd = Sheets("devis")
DL = Wd.Range("A" & Rows.Count).End(xlUp).Row
numéro = DL
End Sub

Pour commencer, j'ai double cliqué sur "créer pour avoir mes formules et j'ai copié ça à la suite, mais en fait, je ne sais pas sur quel bouton est fléché ce truc.
Que signifie Dim DL? Dim Wd ? Set Wd?
Je l'ai dit hein? complètement novice...
En tout cas ça fonctionne et c'est top.
Encore merci.
 

M12

XLDnaute Accro
Re
Quand on fait une macro, le bon principe est de déclarer ses variables
par l'instruction Dim
Que signifie Dim DL? (% pour integer --> nombre)
Dim Wd ? (as Worksheet pour signaler une feuille)

DL = Wd.Range("A" & Rows.Count).End(xlUp).Row --> Dernière ligne remplie de la colonne (pour ton exemple c'est colonne A)
Set Wd? --> attribution de la variable au nom de la feuille
En ouvrant l'userform par Private Sub UserForm_Initialize()
comme le nom l'indique, il initialise les données
il recherche la dernière ligne remplie de la colonne A qui contient les N° et comme ils sont attribués en décalage avec les N° de ligne je rempli le Textbox "numéro" avec la Dl (dernière ligne)
Si par exemple ton tableau avait commencé à partie de la 5ème ligne, j'aurais soustrait le N° de la DL - 4 pour obtenir le chiffre 1
 

Delphes

XLDnaute Nouveau
Ce n'est pas encore tout à fait clair, mais ça vient.
Si j'ai bien compris DL signifie "dernière ligne", ce qui me surprend parce que je croyais qu'on parlait anglais.
Et l'autre truc qui m'étonne c'est qu'à aucun moment tu ne nommes la feuille ou le formulaire. Ce qui me fait supposer que cette macro fonctionnerait automatiquement sur tous mes autres formulaires?
ou sinon il faudrait que je mette
Private Sub UserForm_Initialize(spectacle) pour initialiser uniquement le formulaire "spectacle"
et
Wd.Range("A" & Rows.Count).End(devis).Row pour aller à la dernière ligne de l'onglet "devis"
???
Je vais continuer à chercher, en tout cas là, je ne suis pas coincée et c'est chouette.
Merci encore une fois.
 

M12

XLDnaute Accro
Re
VB:
Private Sub UserForm_Initialize()
  Dim DL% 'Déclaration de la variable DL pour dernière ligne, mais tu peux même la nommer "TARTENPION"
  Dim Wd As Worksheet 'Déclaration de la worksheet , moi je l'ai nommé W pour Worksheet et d pour destination, mais tu la nommer MACRON
  Set Wd = Sheets("devis") 'j'attribue à la variable Wd le nom de la feuille
  DL = Wd.Range("A" & Rows.Count).End(xlUp).Row
  numéro = DL 'numéro est le nom que tu donné pour le textbox de cette userform et qui serait bien mieux s'il se nommait txtNumero
  'au moins on se souvient que c'est un TextBox 
End Sub
à aucun moment tu ne nommes la feuille ou le formulaire. --> et çà c'est quoi Private Sub UserForm_Initialize()
Ce qui me fait supposer que cette macro fonctionnerait automatiquement sur tous mes autres formulaires? --> Si c'est la même feuille et même colonne

ou sinon il faudrait que je mette
Private Sub UserForm_Initialize(spectacle) pour initialiser uniquement le formulaire "spectacle"
et
Wd.Range("A" & Rows.Count).End(devis).Row pour aller à la dernière ligne de l'onglet "devis"
???
Tu peux toujours essayer, et si çà fonctionne, tu sera un bon :eek:
 

Delphes

XLDnaute Nouveau
OK,

donc "dim" signifie "déclaration"
"%" signifie "variable"
"Set" signifie "attribuer"

J'envisage VBA comme une langue, et pour m'en sortir comme je n'ai aucune connaissance de base, j'ai besoin de le traduire en français.

Du coup j'ai une question je jure que c'est la dernière ;) ... pour l'instant

on aurait pu raccourcir ça?
Dim Wd As Worksheet
Set Wd = Sheets("devis")

en disant un truc du style:
Dim("devis")As worksheet?

Je vais essayer, bien que je suppose que ce soit foireux comme raisonnement.
 

Discussions similaires

Statistiques des forums

Discussions
312 111
Messages
2 085 396
Membres
102 882
dernier inscrit
Sultan94