VBA- formule
Résolu
GAULAUFE
Messages postés
19
Statut
Membre
-
Le Pingou Messages postés 12640 Date d'inscription Statut Contributeur Dernière intervention -
Le Pingou Messages postés 12640 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Nous avons une VBA avec un formulaire. Dans ce formulaire de création de client, nous avons des identifiants et nous souhaiterions qu’à chaque client créé, l’identifiant rajoute un 1. C’est-à-dire, que le premier client créé porte l'identifiant 5000 et que le deuxième porte l'identifiant 5001, cependant je n'arrive pas à mettre dans ma macro une formule ou autre, pour que quand je créé mon deuxième client, le code se mette à 5001. Auriez vous une solution à mon problème ?
Et j’aurai une autre question, auriez-vous une formule pour copier les clients que je crée (dans la feuille : création client) pour les mettre dans la deuxième feuilles (Client enregistré).

Mon code :
'*******
'Procédure permettant d'ajouter un nouvel enregistrement
' dans la base de données
'*******
Private Sub btnAjout_Click()
'SELECTION DE LA DERNIERE LIGNE VIDE
Feuil4.Activate
Feuil4.Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveCell = Me.TxtIdentifiant
'AFFECTATION DES DONNEES DANS LE TABLEAU
ActiveCell = Me.TxtIdentifiant
ActiveCell.Offset(0, 0) = 5000 'Code tier
ActiveCell.Offset(0, 1) = Me.cboEntreprise
ActiveCell.Offset(0, 2) = Me.cboCivilité
ActiveCell.Offset(0, 3) = Me.txtNom
ActiveCell.Offset(0, 4) = Me.txtPrénom
ActiveCell.Offset(0, 5) = Me.txtAdresse
ActiveCell.Offset(0, 6) = Me.txtAdresseSuite
ActiveCell.Offset(0, 7) = Me.cboVille
ActiveCell.Offset(0, 8) = Me.cboCodePostal
ActiveCell.Offset(0, 9) = Me.txtEmail
ActiveCell.Offset(0, 10) = Me.txtTéléphone
ActiveCell.Offset(0, 11) = Me.txtMobile
End Sub
'******
'Procédure permettant de
'fermer un formulaire
'******
Private Sub btnFermer_Click()
Unload Me
End Sub
'*******
'Procédure permettant d'accéder
'à la source de données
'*******
Private Sub btnSource_Click()
Feuil1.Activate
Range("A1").Select
End Sub
'***********
' Procédure permettant de réinitialiser
' les champs du formulaire
'**********
Private Sub btnEffacer_Click()
cboCivilité = ""
cboCodePostal = ""
cboEntreprise = ""
cboVille = ""
TxtIdentifiant = ""
txtNom = ""
txtPrénom = ""
txtAdresse = ""
txtAdresseSuite = ""
txtEmail = ""
txtMobile = ""
txtTéléphone = ""
End Sub
'******* La formule que je cherche devrai se mettre ici normalement*****
'Private Sub TxtIdentifiant_Change()
'End Sub
'*********
' Procédure permettant d'activer
' le bouton d'ajout d'enregsitrement
'********
Private Sub txtNom_Change()
If txtNom <> "" Then
btnAjout.Enabled = True 'Activer le bouton
Else
btnAjout.Enabled = False 'Désactiver le bouton
End If
End Sub
Merci de prendre le temps de me répondre
Nous avons une VBA avec un formulaire. Dans ce formulaire de création de client, nous avons des identifiants et nous souhaiterions qu’à chaque client créé, l’identifiant rajoute un 1. C’est-à-dire, que le premier client créé porte l'identifiant 5000 et que le deuxième porte l'identifiant 5001, cependant je n'arrive pas à mettre dans ma macro une formule ou autre, pour que quand je créé mon deuxième client, le code se mette à 5001. Auriez vous une solution à mon problème ?
Et j’aurai une autre question, auriez-vous une formule pour copier les clients que je crée (dans la feuille : création client) pour les mettre dans la deuxième feuilles (Client enregistré).
Mon code :
'*******
'Procédure permettant d'ajouter un nouvel enregistrement
' dans la base de données
'*******
Private Sub btnAjout_Click()
'SELECTION DE LA DERNIERE LIGNE VIDE
Feuil4.Activate
Feuil4.Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveCell = Me.TxtIdentifiant
'AFFECTATION DES DONNEES DANS LE TABLEAU
ActiveCell = Me.TxtIdentifiant
ActiveCell.Offset(0, 0) = 5000 'Code tier
ActiveCell.Offset(0, 1) = Me.cboEntreprise
ActiveCell.Offset(0, 2) = Me.cboCivilité
ActiveCell.Offset(0, 3) = Me.txtNom
ActiveCell.Offset(0, 4) = Me.txtPrénom
ActiveCell.Offset(0, 5) = Me.txtAdresse
ActiveCell.Offset(0, 6) = Me.txtAdresseSuite
ActiveCell.Offset(0, 7) = Me.cboVille
ActiveCell.Offset(0, 8) = Me.cboCodePostal
ActiveCell.Offset(0, 9) = Me.txtEmail
ActiveCell.Offset(0, 10) = Me.txtTéléphone
ActiveCell.Offset(0, 11) = Me.txtMobile
End Sub
'******
'Procédure permettant de
'fermer un formulaire
'******
Private Sub btnFermer_Click()
Unload Me
End Sub
'*******
'Procédure permettant d'accéder
'à la source de données
'*******
Private Sub btnSource_Click()
Feuil1.Activate
Range("A1").Select
End Sub
'***********
' Procédure permettant de réinitialiser
' les champs du formulaire
'**********
Private Sub btnEffacer_Click()
cboCivilité = ""
cboCodePostal = ""
cboEntreprise = ""
cboVille = ""
TxtIdentifiant = ""
txtNom = ""
txtPrénom = ""
txtAdresse = ""
txtAdresseSuite = ""
txtEmail = ""
txtMobile = ""
txtTéléphone = ""
End Sub
'******* La formule que je cherche devrai se mettre ici normalement*****
'Private Sub TxtIdentifiant_Change()
'End Sub
'*********
' Procédure permettant d'activer
' le bouton d'ajout d'enregsitrement
'********
Private Sub txtNom_Change()
If txtNom <> "" Then
btnAjout.Enabled = True 'Activer le bouton
Else
btnAjout.Enabled = False 'Désactiver le bouton
End If
End Sub
Merci de prendre le temps de me répondre
A voir également:
- VBA- formule
- Formule si et - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Excel mise en forme conditionnelle formule - Guide
- Formule somme excel ligne - Guide
6 réponses
Bonjour,
Vous allez chercher le dernier Identifiant dans votre plage de donnée et ensuite vous l'attribuez à votre (TextBox) correspondante du formulaire en lui ajoutant1 (Me.Ident= dernierIdent +1)
Vous allez chercher le dernier Identifiant dans votre plage de donnée et ensuite vous l'attribuez à votre (TextBox) correspondante du formulaire en lui ajoutant1 (Me.Ident= dernierIdent +1)
Bonjour,
Je veux bien vous aider, le code que vous avez mis n'est pas très explicite, se sera plus simple en mettant le fichier sur https://www.cjoint.com/ et poster le lien.
Note: j'ai l'impression que c'est le même cas VBA - Formulaire [Résolu] de juillet/août!
Je veux bien vous aider, le code que vous avez mis n'est pas très explicite, se sera plus simple en mettant le fichier sur https://www.cjoint.com/ et poster le lien.
Note: j'ai l'impression que c'est le même cas VBA - Formulaire [Résolu] de juillet/août!
Effectivement c'est le même cas que celui que vous avez trouvé mais ayant peu de réponse, j'ai préféré refaire un post, et mettre le précédent en résolu.
Je vous donne le lien si vous souhaitez regarder mon code : https://www.cjoint.com/c/KIhlYMHGqfE
Je vous donne le lien si vous souhaitez regarder mon code : https://www.cjoint.com/c/KIhlYMHGqfE
Bonjour,
Je constate que vous avez un tableau structuré [Tableau10] , c'est différent d'un tableau.
Est- ce vraiment ce que vous voulez ou peut-on passer à un tableau normal ..?
Merci de la réponse.
Je constate que vous avez un tableau structuré [Tableau10] , c'est différent d'un tableau.
Est- ce vraiment ce que vous voulez ou peut-on passer à un tableau normal ..?
Merci de la réponse.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J’ai adapté en tenant compte du tableau structuré, j’ai ajouté code pour initialiser le formulaire.
Voir les détails dans module du formulaire.
Vous revenez si problème ou autre… !
Le lien : https://www.cjoint.com/c/KIhtDep4V0n
J’ai adapté en tenant compte du tableau structuré, j’ai ajouté code pour initialiser le formulaire.
Voir les détails dans module du formulaire.
Vous revenez si problème ou autre… !
Le lien : https://www.cjoint.com/c/KIhtDep4V0n
Je débute dans ce système, je ne comprend pas tous, et je vous avoue que je suis un peu perdue...
Pour trouver le dernier identifiant, j ai mis comme formule :
Feuil4.Activate
Feuil4.Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveCell = Me.TxtIdentifiant
Mais à partir d'ici, j'ai mis votre formule :
Me.Identifiant = Feuil4.Range("A1048576").End(xlUp).Offset(1, 0).Select + 1
Mais rien ne se passe, c'est à dire que l’identifiant reste à 5000 donc je pense que je me suis trompée dans quelques choses mais je ne trouve pas mon erreur ....