Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

belerofon

XLDnaute Occasionnel
Bonjour à tous,
Quelqu'un saurait il comment faire pour coder la problematique suivante sous VBA :
jusqu a present j utilisais un numero unique pour archiver mes dossier avec une incrémentation de 1 a chaque iteration... du style : 1 puis 2 , 3 etc...
A présent j'ai besoin d'un nouveau systeme d archivage plus complexe...
il se base sur 3 variables, une clé a 3 lettres en fonction d une ville, des deux derniers chiffres de l année et du numero de dossier...
un numero type ressemblerait donc a cela :
VRS-11-001 : ce qui representerait le dossier 001 de l année 2011 pour la commune VRS (versailles)
et pour corser le challenge, il faudrait qu en passant a l année 2012 la variable "dossier" repasse automatiquement a 001...
Biensur lors de la saisie d un nouveau dossier via un userform , le codage devra permettre l incrementation du numero de dossier uniquement (les trois derniers chiffres)

Merci à tous et que le meilleur reponde le plus vite... 🙂
J.
 

Pièces jointes

Dernière édition:
Re : Petit Challenge VBA

Non, j ai rien dit, un coup de balai et tout est rentré dans l'ordre... ton code marche a merveille... et mon cerveau secrete une hormone agreable parceque tu m as deja appris une quantité de truc géniaux ... au fait demain j passe a la fnac acheter VBA pour les nuls comme ca j enquiquinerais moins le monde ici 🙂
 
Re : Petit Challenge VBA

Re

Pour finir avant d'aller titiller Morphée, voici des modifs pour ce qui concerne le changement d'année
(cela semble OK)
Je te remets tout le code
Code:
Public Num As Long
Private Sub ComboBox2_Change()
Dim CodeVille, TestAN As Boolean
CodeVille = WorksheetFunction.VLookup([D2], [Villes], 2, 0)
TextBox5 = CodeVille & "-" & Right(Year(CDate(TextBox2)), 2) & Format(Num + 1, "-000")
End Sub
Code:
Private Sub CommandButton1_Click()
With [J65533].End(xlUp)(2)
.Value = TextBox5
.Offset(, 1) = CDate(TextBox2)
.Offset(, 2) = ComboBox1
.Offset(, 3) = ComboBox3
.Offset(, 4) = ComboBox2
    With .Resize(, 5)
        .Borders.LineStyle = xlContinuous
        .HorizontalAlignment = xlCenter
    End With
End With
End Sub

Code:
Private Sub UserForm_Initialize()
Dim plg As Range, TestAN As Boolean
Set plg = Range("A1:B42"): plg.Name = "Villes"
'entre la date du jour
TextBox2.Value = Date
TestAN = Right(Year(Date), 2) = Mid(ActiveSheet.[J65536].End(xlUp), 5, 2)
Num = IIf(TestAN, Val(Right([J65533].End(xlUp), 3)), 0)
End Sub
 
Re : Petit Challenge VBA

Re

. au fait demain j passe a la fnac acheter VBA pour les nuls comme ca j enquiquinerais moins le monde ici 🙂

Si j'étais toi, je garderai mes sous pour autre chose.

Tu trouves largement de quoi découvrir et apprendre le VBA en parcourant ce forum
Il n'y a pas que les discussions, il y aussi la section Téléchargements qui regorgent d'exemples et de tutoriaux.
Sans oublier la touche F1 qui t'affichera l'aide VBA d'Excel.

PS: Pour tester dernier code (celui de mon précédent mesage), il faut changer la date de ton PC (mets là au premier janvier 2012) puis lances la macro ensuite remets la date du jour.
 
Re : Petit Challenge VBA

j ai pas reussi a simuler 2012 mais la je galere a transposer ton code a l interieur de celui existant sur mon fichier de travail et du coup la fonction worksheet ne refonctionne plus puisque ma liste des villes est dans un onglet different de l activeworksheet :s
 
Re : Petit Challenge VBA

Re

D’où l’intérêt de joindre une pièce jointe exemple qui reflète le plus fidèlement le fichier original...

Pour ma part, le test sur le changement d'année d'année fonctionne (sur la base de ton fichier exemple) et en suivant les instructions complémentaires que je t'ai fourni.

Vu l'heure, je quitte bientôt mon PC pour ma brosse à dent et ma nuisette (sans oublier ma crème de nuit)

J'espère que quelques insomniaques viendront prendre la suite.

Je repasserai voir comment tu t'en sors.

Bonne nuit.

PS:un dernier indice
Set plg = Range("A1:B42"): plg.Name = "Villes"
en mettant la référence de la feuille
Set plg = Sheets("NOMDELAFEUILLE").Range("A1:B42"): plg.Name = "Villes"

cela devrait fonctionner à nouveau.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
752
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
T
  • Question Question
Réponses
125
Affichages
14 K
G
  • Question Question
Réponses
1
Affichages
803
Grouchet
G
N
Réponses
6
Affichages
702
A
  • Question Question
Réponses
1
Affichages
1 K
D
Réponses
17
Affichages
7 K
drum7917
D
T
Réponses
11
Affichages
2 K
J
Réponses
15
Affichages
2 K
J
Réponses
7
Affichages
45 K
J
Réponses
7
Affichages
1 K
J
T
Réponses
10
Affichages
5 K
toinish
T
Retour