Le problème dans vos codes, c’est qu’a aucun moment le combobox Nom complet et initialisé avec les noms et prénoms
Et je dis bien avec le prénom, car si je recherche le nom THERIEUR, il y a Alain et Alex, donc il faut pouvoir les distinguer
morceau à mettre dans l’userform initialise
With Me.CBox_NomComplet 'Procédure de remplissage du Combobox NomComplet
.ColumnCount = 2 'qui contient 2 colonnes
.ColumnWidths = "-1;-1" 'Attribue la largeur (égale)
CBox_NomComplet.List = f.Range("B3:C" & f.Range("B" & Rows.Count).End(xlUp).Row).Value 'Remplissage du Combobox NomComplet
End With
Macro à ajouter pour éviter l’ajout de doublons entre nom et prenom
Private Sub TBox_Prenom_AfterUpdate()
'Vérification si le Nom & Prénom existe déjà ou pas
With Feuil1
Set PlageNom = .Range(.Cells(3, 2), .Cells(.Rows.Count, 2).End(xlUp))
Set PlagePrenom = .Range(.Cells(3, 3), .Cells(.Rows.Count, 3).End(xlUp))
End With
'boucle la plage de la feuille "Compte" et cherche chaque valeur
'en correspondance exacte dans la plage de la feuille "Source"
For Each Cel In PlageNom
If UCase(Cel.Value) = UCase(Me.TBox_Nom) And UCase(Cel.Offset(0, 1).Value) = UCase(Me.TBox_Prenom) Then
Beep
MsgBox "Attention, le client '" & Cel.Value & " " & Cel.Offset(0, 1).Value & "' est déjà dans la base !"
Feuil1.Activate
Me.TBox_Nom = ""
Me.TBox_Prenom = ""
Me.TBox_Nom.SetFocus
End If
Next Cel
'Modifie le texte avec la première lettre en Maj
Me.TBox_Prenom = Application.Proper(Me.TBox_Prenom)
End Sub
Si tu initialises pas la variable “f” à la feuille
Pourtant je le précise dans mon dernier post
Re,
Eh bien il suffit de définir la variable “f” Dim f As Worksheet
et de l’initialiser Set f = Feuil1 'Attribue à f le nom de la feuille
Set f = Feuil1 'Attribue à f le nom de la feuille
With Me.CBox_NomComplet 'Procédure de remplissage du Combobox NomComplet
.ColumnCount = 2 'qui contient 2 colonnes
.ColumnWidths = "-1;-1" 'Attribue la largeur (égale)
CBox_NomComplet.List = f.Range("B3:C" & f.Range("B" & Rows.Count).End(xlUp).Row).Value 'Remplissage du Combobox NomComplet
End With
Ne baisse pas les bras, c’est pas marrant pour moi de me retrouver seul a vouloir évoluer en VBA et @Mimimathy, nous aider lorsque nous rencontrons une difficulté.
Je te joins le fichier avec les dernières modifs:
Quand tu choisis l’option “Modifier” tu pourras alors modifier les lignes que tu veux.
Donc, il te reste la Suppression, si tu t’aides de ta variable “Modif” pour les modifications, tu as donc le N° de la ligne, il ne reste plus qu’à faire sa suppression
Pour Kiss, MDO à raison, faut pas baisser les bras, le dernier classeur de MDO est fonctionnel alors part sur cette base
Voici ma modif pour la suppression d’une ligne:
J’ai choisi de déclarer une nouvelle variable “Sup%” afin de m’y retrouver.
Le code:
If Btn_Validation.Caption = "Supprimer" Then 'Si le bouton s'appel Supprimer alors
'Message avant suppression d'un Client
If MsgBox("Confirmez-vous la suppression de ce Client ?", vbYesNo, "Demande de confirmation de suppression Client") = vbNo Then
Me.Cbox_Civilite.SetFocus
Exit Sub
Else
Sup = Me.CBox_NomComplet.ListIndex + 3
'Vide les ComboBox et les TextBox
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "ComboBox" Then Ctrl.Text = ""
If TypeName(Ctrl) = "TextBox" Then Ctrl.Text = ""
Next Ctrl
'Mettre dans la ligne concern?e la valeur vide
.Cells(Sup, 1) = Me.Cbox_Civilite.Value
.Cells(Sup, 2) = Me.TBox_Nom.Value
.Cells(Sup, 3) = Me.TBox_Prenom.Value
.Cells(Sup, 4) = Me.TBox_DNais.Value
.Cells(Sup, 5) = Me.TBox_Adresse.Value
.Cells(Sup, 6) = Me.TBox_CP.Value
.Cells(Sup, 7) = Me.TBox_Ville.Value
.Cells(Sup, 8) = Me.TBox_TelFixe.Value
.Cells(Sup, 9) = Me.TBox_TelPort.Value
.Cells(Sup, 10) = Me.TBox_Mail.Value
'Supprime les lignes vides a partir de la colonne 1
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End If
Maintenant @Mimimathy, comment créer une banque d’image sur une nouvelle feuille que je nommerais “Photo”, j’avoue que je ne sais pas trop comment m’y prendre afin qu’elles aient toutes la même dimension.
Bien sûr il faudra que je modifie encore le code afin d’y associer la photo pour chaque nom et je crois qu’il faut utiliser “Shape”.
Donc je place dans un lien, le classeur (comme je l’ai créé) avec un dossier contenant des images des clients
Explorer un peu le code afin de voir les erreurs et amélioration que vous pourriez faire en établissant une macro pour la suppression des données dans tous les Textbox et ComboBox, et voir aussi l’ajout d’une fonction pour vérifier la validité d’une adresse Mail
Maintenant, il faut quand vous êtes en Modification ou Suppression, que le contrôle IMAGE affiche l’image correspondante au client
et
Si vous êtes plus balaise, l’afficher sur la feuille CLIENTS quand depuis cette feuille vous cliquez sur sa ligne https://mon-partage.fr/f/3ZmQ2zkt/
Private Sub OptB_Ajouter_Click()
Private Sub OptB_Modifier_Click()
Private Sub OptB_Supprimer_Click()
J’ai ajouté cette condition pour effacer l’image à chaque clique.
Me.Photo.Picture = LoadPicture 'Vide la photo
Je ne peux pas mettre le fichier, car à la place de mdo100, il y a mon vrai nom de famille.
Mais comme tu le vois dans le code, j’ai rusé encore une fois, car je n’ais pas utilisé " Me.CBox_NomComplet " mais les 2 TexstBox " Me.TBox_Nom & " " & Me.TBox_Prenom "
Peut-être me donneras-tu une solution pus simple ?
Je commençais à perdre espoir, Pas de réponse (bon je veux bien que là si tu « farfouilles pas » tu trouves pas)
Alors une astuce, au lieu de mettre :
Mettre:
Identité =ThisWorkbook.path & "\Identité"
Explication: ThisWorkBook.Path est le chemin où se trouve ton classeur Excel sur lequel tu travailles
si tu rajoutes le chemin où se trouve le dossier contenant les images sans oublier les "\" au début et à la fin
tu auras un chemin identique, et surtout, sur n’importe quel PC
Mais tu as bien bossé
J’attend ton final avec la correction sur la macro depuis mes indications.
Et là, il y a une récompense (un EXCEL sans formule, tout en VBA, pour vos RdV et/ ou Fêtes - Anniv utilisable de 1900 à 2100 ( Après, je ne serai plus là pour les modifs. )