Exercice Formulaire VBA d'insertion et de modification des clients
Bonsoir membres du forum,
Voici un exercice que j'ai essayé de le traiter en suivant les instructions données https://www.bonbache.fr/formulaire-vba-d-insertion-et-de-modification-des-clients-503.html mais finalement je me rends compte que la commande Ajouter ne marche pas comme il se doit.
Pourriez vous me situer mes erreurs ?
J'espère que je ne fais pas un Cross-posting si tel est le cas alors supprimer le sujet que je viens d'ouvrir.
Pièce jointe
Cordialement.
Bonjour morobaboumar
Merci d'être plus explicite dans votre demande
la commande Ajouter ne marche pas comme il se doit.
J'ai essayé le fichier, si vous sélectionnez une ligne vierge, que vous saisissez les informations et que vous cliquez sur [AJOUTER]
tout fonctionne parfaitement bien...
Sinon il semeble que vous n'ayez toujours pas compris ce qu'est le cross-posting, ce n'est pas faute de vous l'avoir déjà expliqué
cross-posting = demander la même chose sur plusieurs forums
Ce qui apparemment n'est pas le cas
Bonjour Bruno45,
Normalement le code de cette commande Ajouter après clique devrait vider toutes les Textbox afin qu'on puisse ajouter un nouvel enregistrement.
Mais ce n'est pas le cas.
Quelle serait la solution ?
Cordialement.
Re,
Dans votre fichier, ça me semblait logique de sélectionner une nouvelle ligne vide pour ajouter, mais bon
A la fin de l'ajout des valeurs, on vide les cellules
If test = False Then
Range("B" & ligne).Value = Range("B3").Value
Range("C" & ligne).Value = Range("D3").Value
Range("D" & ligne).Value = Range("G3").Value
Range("E" & ligne).Value = Range("B6").Value
Range("F" & ligne).Value = Range("D6").Value
Range("G" & ligne).Value = Range("B9").Value
Range("H" & ligne).Value = Range("G9").Value
Range("I" & ligne).Value = Range("D9").Value
' Vider les champs après remplissage de la BdD
Application.EnableEvents = False
Range("B3,D3,G3,B6,D6,B9,G9,D9").ClearContents
Application.EnableEvents = True
Else
MsgBox "Le client existe déja"
End IfJe viens d'effectuer le changement mais il y a un message d'erreur:
Private Sub vider_form()
'Range("B3").Value = Range("D3").Value = Range("G3").Value = ""
'Range("B6").Value = Range("D6").Value = Range("B9").Value = ""
'Range("G9").Value = Range("D9").Value = ""
If test = False Then
Range("B" & ligne).Value = Range("B3").Value
Range("C" & ligne).Value = Range("D3").Value
Range("D" & ligne).Value = Range("G3").Value
Range("E" & ligne).Value = Range("B6").Value
Range("F" & ligne).Value = Range("D6").Value
Range("G" & ligne).Value = Range("B9").Value
Range("H" & ligne).Value = Range("G9").Value
Range("I" & ligne).Value = Range("D9").Value
' Vider les champs après remplissage de la BdD
Application.EnableEvents = False
Range("B3,D3,G3,B6,D6,B9,G9,D9").ClearContents
Application.EnableEvents = True
Else
MsgBox "Le client existe déja"
End If
End Sub
Re,
Pourquoi mettre le code dans une nouvelle Sub
Perso je laisse tomber... je n'ai absolument pas la patience pour
Désolé ! Je n'ai pas bien compris l'emplacement des lignes de code que vous m'avez suggérées.
Non je l'ai introduit dans la procédure vider_form() qui est fait parti des codes de l'application.
Dites moi où la mettre ?
Merci de bien vouloir me comprendre !
Cordialement.
Bonsoir BrunoM45,
Dis moi où pourrais je placer ce code ?
If test = False Then
Range("B" & ligne).Value = Range("B3").Value
Range("C" & ligne).Value = Range("D3").Value
Range("D" & ligne).Value = Range("G3").Value
Range("E" & ligne).Value = Range("B6").Value
Range("F" & ligne).Value = Range("D6").Value
Range("G" & ligne).Value = Range("B9").Value
Range("H" & ligne).Value = Range("G9").Value
Range("I" & ligne).Value = Range("D9").Value
' Vider les champs après remplissage de la BdD
Application.EnableEvents = False
Range("B3,D3,G3,B6,D6,B9,G9,D9").ClearContents
Application.EnableEvents = True
Else
MsgBox "Le client existe déja"
End IfJe ne suis qu'un apprenant.
Désolé ! Soyez patient avec moi.
Cordialement.
Bonsoir morobaboumar,
Bonsoir BrunoM45,
Bonsoir le forum
Ce que Bruno voulait te dire c'est qu'il faut remplacer le code par le sien dans la procédure "insertion" rattaché à la feuille "bd_clients"
Cordialement
Bonjour Streetchris82,
J'ai des messages d'erreur:
Private Sub insertion(mode As String)
Dim ligne As Integer: Dim test As Boolean
test = False
If (Range("P9").Value = 0) Then
If (mode = "Ajout") Then
ligne = NvLigne
If (ClExiste = True) Then test = True
Else
ligne = ligneSel
End If
ActiveSheet.Unprotect
If test = False Then
Range("B" & ligne).Value = Range("B3").Value
Range("C" & ligne).Value = Range("D3").Value
Range("D" & ligne).Value = Range("G3").Value
Range("E" & ligne).Value = Range("B6").Value
Range("F" & ligne).Value = Range("D6").Value
Range("G" & ligne).Value = Range("B9").Value
Range("H" & ligne).Value = Range("G9").Value
Range("I" & ligne).Value = Range("D9").Value
' Vider les champs après remplissage de la BdD
Application.EnableEvents = False
Range("B3,D3,G3,B6,D6,B9,G9,D9").ClearContents
Application.EnableEvents = True
Else
MsgBox "Le client existe déja"
End If
vider_form
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
MsgBox "Tous les champs ne sont pas correctement renseignés"
End If
End Sub
Cordialement.
Bonjour BrunoM45,
Voici les Fichiers !
Bonsoir tous le monde :)
L'erreur venait du fait que la variable "ligne" est déclaré mais tu ne lui donne aucune valeur, ici si j'ai bien compris, c'est la ligne ou insérer la nouvelle entrée (1ère ligne non vide de ton tableau du coup)
En PJ ton fichier :)
Cordialement,
Private Sub insertion(mode As String)
Dim ligne As Long: Dim test As Boolean
ligne = Sheets("bd_clients").Cells(Rows.Count, 2).End(xlUp).Row + 1
If test = False Then
Range("B" & ligne).Value = Range("B3").Value
Range("C" & ligne).Value = Range("D3").Value
Range("D" & ligne).Value = Range("G3").Value
Range("E" & ligne).Value = Range("B6").Value
Range("F" & ligne).Value = Range("D6").Value
Range("G" & ligne).Value = Range("B9").Value
Range("H" & ligne).Value = Range("G9").Value
Range("I" & ligne).Value = Range("D9").Value
' Vider les champs après remplissage de la BdD
Application.EnableEvents = False
Range("B3, D3:E3, G3:H3, B6, D6:E6, B9, D9:E9, G9:H9").ClearContents
Application.EnableEvents = True
Else
MsgBox "Le client existe déja"
End If
End Sub