Incrémentation et copie Userform

Bonjour à tous,

C'est la première fois que j'ose poster une demande sur un forum, d'habitude je cherche pendant des jours..

Je cherche a copier un Userform1 dans une base de donnée (BD action).

En colonne A j'ai besoin d'une incrémentation automatique (Increment).

J'ai lue les forums mais la je doits avoué que je calle un peut..

Je comprend pas ce qui bloque..

Mon code :

Private Sub CommandButton4_Click()

'Code pour le bouton CREER un enregistrement

'variables ajoutées au code

Dim Derligne As Long

Dim Increment As Integer

'Message de confirmation d'ajout de données

If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then

'Selection de la plage qui va recevoir les données

Worksheets("BD action").Activate

'Données copiées dans BD action

'Information enregistrement

With Sheets("BD action")

' Valeurs variables ajoutées au code

Derligne = .Range("A" & Rows.Count).End(xlUp).Row

Increment = .Range("A" & Rows.Count).End(xlUp).Row + 1

.Cells(Derligne, 1) = Increment

.Cells(Derligne, 2) = UserForm1.ComboBox2.Value

.Cells(Derligne, 3) = UserForm1.TextBox1.Value

.Cells(Derligne, 4) = UserForm1.ComboBox3.Value

.Cells(Derligne, 5) = UserForm1.ComboBox4.Value

.Cells(Derligne, 6) = UserForm1.TextBox2.Value

.Cells(Derligne, 7) = UserForm1.TextBox3.Value

.Cells(Derligne, 8) = UserForm1.ComboBox5.Value

'Information action

.Cells(Derligne, 9) = UserForm1.ComboBox6.Value

.Cells(Derligne, 10) = UserForm1.ComboBox7.Value

.Cells(Derligne, 11) = UserForm1.ComboBox8.Value

.Cells(Derligne, 12) = UserForm1.TextBox4.Value

'Suites a donnée

.Cells(Derligne, 36) = UserForm1.TextBox5.Value

.Cells(Derligne, 37) = UserForm1.TextBox6.Value

.Cells(Derligne, 38) = UserForm1.TextBox7.Value

.Cells(Derligne, 39) = UserForm1.TextBox8.Value

.Cells(Derligne, 40) = UserForm1.ComboBox9.Value

.Cells(Derligne, 42) = UserForm1.TextBox9.Value

End With

'Repositionnement sur formulaire

Worksheets("Formulaire").Select

'Message de fin

MsgBox "Informations enregistrées"

Else

End If

End Sub

Merci pour votre aide infini !

Bonjour et bienvenue sur le forum

Il serait plus facile d'analyser ton problème si tu joignais ton fichier complet...

Bye !

Désolé avec le décalage horaire je répond 10 heure plus tard....

Voici le fichier

Merci de ta réponse

Bonjour,

C'est une sage décision quand on se lance dans un projet de cette envergure de consulter des gens expérimentés.

Cela suppose que tu aies déjà balayé tes appréhensions...

Il le faut, et il te faudra aussi surmonter de nombreux à priori car ton projet est complexe et suscitera de nombreuses critiques :

Les répondeurs dans leur immense majorité ne sont pas blessants par principe mais ils sont critiques par nécessité. Il faut savoir accepter la critique même si elle n'est pas agréable à entendre quand bien même elle oblige parfois à tout recommencer.

Cette précaution oratoire étant prise... On n'est pas dans la mouise !

Généralités sur les UserForm :

Un UserForm est une interface entre l'opérateur et ta Base de données. Il importe de définir dès le départ si cette base de donnée sera accessible (visible) par l'opérateur.

Dans la mesure ou tu passes par une page d'accueil, on peut prévoir que NON. Même si dans une première étape comme on voit les onglets de feuille elle reste accessible quand même.

De manière générale un tel UserForm doit être capable de faire au minimum les 4 opérations indispensables pour maintenir cette base de donnée en bon état :

- Consulter la base de donnée en recherchant une fiche et en la parcourant la base au besoin ligne par ligne.

- Modifier des enregistrements existants

- Ajouter des enregistrements

- Supprimer (ou archiver un enregistrement obsolète.

Ces 4 opérations fondamentales sont connues sous l''acronymes anglais de CRUD :

Create : Créer

Read : lire / Recherche

Update : mettre à jour

Delete : supprimer

Pour rester dans les généralités, ton UserForm doit savoir dès le départ pourquoi il est affiché :

Ce qui lui permet d'afficher des informations pertinentes !

Bien que cela paraisse logique au premier abord commencer par la Création de fiche, n'est pas la meilleure approche :

Il serait préférable que ton UserForm lors de son affichage se mette en position Read :

- Affichage, Recherche d'enregistrement, parcourir la base de donnée.

Une fois que cette base est acquise ça t'ouvre déjà la voie facilement à 2 autres possibilités :

- Modifier l'enregistrement affiché ou

- Supprimer un enregistrement fauté ou indésirable

Quand ces 3 fonctionnalités sont acquise il devient alors très simple de passer à la création d'une nouvelle fiche.

Bon tu as choisi de commencer par la fin, tant pis. Il est très simple de nourrir une nouvelle ligne :

Détermination de la ligne ou on va écrire :

With Sheets("BD action")
no_ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
Détermination du numéro iD
.Cells(Derligne, 1) = WorksheetFunction.Max(.Columns(1))+1
.Cells(Derligne, 2) = Me.ComboBox2.Value
'... et la suite

Nota : Quand tu cites du code, sélectionne le et appuie sur la balise </> en haut de l'éditeur de message :

C'est plus clair à lire n'est-ce pas ?

Hé,Hé... C'est maintenant qu'il va y avoir du sport ! Parce qu'il va bien falloir commencer par le commencement :

Lire, parcourir la base de donnée et modifier l'enregistrement concerné.

A+

Bonjour,

Bonjour Galopin

Galopin a tout dit, ou presque…

Je me contenterai donc de t’indiquer que dans le gestionnaire de noms, on trouve beaucoup de choses et en particulier un ‘’ ID ‘’ qui fait référence à :

='BD action'!$A$2:$A$3

Outre que je n’en vois pas l’intérêt, ce nom m’empêchait de faire fonctionner le code du bouton ‘’CREER’’ dans l’UserForm1

Une fois ce nom supprimer de la liste, le report des indications saisies dans la boîte de dialogue se sont correctement reportées sur la feuille ‘’BD action‘’.

Non, en fait je n’ai saisi que la date mais elle s’est bien reportée et l’incrémentation s’est bien faite.

Voilà, c’est tout.

Je repasse la main à Galopin.

Bon courage !

Bye !

Bonjour a tous,

J'ai lue avec grande attention vos remarque.

Il y avais un problème sur le nom "ID" , j'ai affecté la colonne entière et ça a fonctionné !

Pour l'incrémentation pareil !

Merci pour toutes vos explications ! C'est ma première application VBA et je doit dire que c'est dure mais super enrichissant !

Merci pour tous

Rechercher des sujets similaires à "incrementation copie userform"