Modification partielle code client avec Bouton d'option

Bonjour à tous,

J'ai créé un UsF pour rentrer des contacts dans un tableau.

L' UsF créé pour chaque contact, un code Prospect "PR- 001", "PR-002", etc. en fonction de la dernière ligne du tableau et du bouton d'option activé (Prospect ou client). Par défaut prospect est pré-sélectionné à la création d'une nouvelle fiche.

L'UsF me permet également de retrouver et modifier une fiche contact déjà créée.

Je souhaiterais donc dans cette procédure (Private Sub CommandButton3_Click() ' BOUTON MODIFIER) lorsque le bouton d'option 2 est "true"(statut "client") remplacer le code "PR-00X" par "CL-00X". (le prospect devient client, changement du préfixe du code mais pas du numéro déjà créé dans la procédure ajouter).

J'ai essayé pas mal de chose en vba avec "replace" mais je n'arrive pas à garder la fin du code existant.

Dans le tableau:

Sachant que la colonne O contient en toute lettre le statut "CLIENT" ou "PROSPECT" qui lui se met bien à jour j'avais imaginé utilisé une formule sur la colonne N permettant de modifier le code avec la fonction SUBSTITUE, sans plus de succès...

merci pour votre aide

21contact.xlsm (234.99 Ko)

Salut feudeuf.

Avant toute chose, je te conseille fortement de passer mettre sous forme de tableau ta feuille Client et de ne plus utiliser le code

Cells(modif, 1) = ComboBox1.Value

En effet, le problème en utilisant un numéro fixe de colonne c'est que le jour où tu veux rajouter une colonne, ton VBA ne fonctionnera plus.

Il faut mieux utiliser une variable comme avec "modif".

Ensuite pour ton problème, je vois deux possibilités :

Soit la longueur de ta référence client ne changera pas dans ce cas un code vba peut faire l'affaire (par contre, si tu as plus plus de quartes chiffres à ton code client ça ne fonctionnera plus)

Tu peut utiliser

Cells(modif, 8) = "CL" & TextBox3.Value Right(TextBox3.Value , 5)

Soit ton code client se complexifiera et dans ce cas diviser le code client en plusieurs colonnes (une pour le lettrage, une pour ne numéro et une combinant les deux) te permettra des évolutions plus aisées.

Dans ce cas, il faudra juste remplacer le "PR" par "CL".

Bonjour Bouli038,

merci pour ton aide rapide, je suis débutant dans le domaine et j'avoue avoir compilé quelques bouts de codes glanés ça et là sur le net.

Pour ce qui est de la mise en forme tableau, il me semblait l'avoir fait : dans la barre de formule quand je clique sur la liste déroulante de l'indicateur de cellule (en haut à gauche) , si je sélectionne tableau2 il me prend bien toutes les lignes renseignées sauf les entêtes, par contre j'ai désactivé l'affichage des filtres sur chaque colonne. Aurais-je omis quelque chose ?

Si je te comprends bien, si je déclare une variable disons "col " as integer dans mon sub, je peux simplement indiquer Cells(modif, col)= ComboBox1.Value par exemple et les données correspondantes se classeront dans la feuille selon l'ordre dans le code vba, par exemple si j'écris

Cells(modif, col)= ComboBox1.Value 'la valeur va se mettre dans la colonne 1 du tableau

Cells(modif, col)= ComboBox2.Value 'la valeur va se mettre dans la colonne 2 du tableau

etc

si j'insère plus tard une ligne dans le tableau , tout se mettra à jour automatiquement si j'insère une nouvelle ligne de code au bon endroit ?

Concernant la formule que tu me proposes j'ai une erreur de fin d'instruction manquante j'ai donc fait

Cells(modif, 10) = TextBox5.Value

etc... et rajouté

Cells(modif, 14) = "CL" & TextBox8(Right(TextBox8.Value, 5)) ' j'ai rajouté 2 parenthèses

Par contre ça ne fonctionne pas ! j'ai cru que c'était parce que la textbox était locked, je l'ai passé en enable=false (je ne veux pas que l'on puisse modifier le code dans l'UsF) pensant que ça venait de là , mais toujours sans succès.

De plus il se peut que je modifie une fiche prospect sans qu'elle devienne obligatoirement une fiche client, c'est uniquement si l'option button2 est cliqué quand je valide la modification de la fiche.

Bonjour,

Ton code semble fonctionnel Tu as juste fais une simple erreur ….. inutile de tester ton option button 2

Si option button1 vrai alors ….

Si option button 1 faux alors….

If OptionButton1.Value = True Then
Codeclient = "PR-" & Format(Numclient, "0000") 'construction du code prospect
End If
If OptionButton1.Value = False Then
Codeclient = "CL-" & Format(Numclient, "0000") 'construction du code client
End If

merci Xmenpl,

En fait ce n'est pas cette partie du code qui me pose problème même si ta solution parait plus logique effectivement.

Mais c'est dans la partie

Private Sub CommandButton3_Click() ' BOUTON MODIFIER

Quand je veux modifier une fiche existante qui n'est pas forcément sur la dernière ligne du tableau je voudrai pouvoir modifier la structure du code client existant (puisque la fiche existe déjà) et en modifier le préfixe "PR-" en "CL-" si le bouton d'option est modifié. SI par exemple j'ai fait une facture pour le prospect "PR-0006" il devient client avec le code "CL-0006".

et ça je n'y arrive pas

merci Xmenpl,

En fait ce n'est pas cette partie du code qui me pose problème même si ta solution parait plus logique effectivement.

Mais c'est dans la partie

Private Sub CommandButton3_Click() ' BOUTON MODIFIER

Quand je veux modifier une fiche existante qui n'est pas forcément sur la dernière ligne du tableau je voudrai pouvoir modifier la structure du code client existant (puisque la fiche existe déjà) et en modifier le préfixe "PR-" en "CL-" si le bouton d'option est modifié. SI par exemple j'ai fait une facture pour le prospect "PR-0006" il devient client avec le code "CL-0006".

et ça je n'y arrive pas

Il me semblait avoir déjà dit que toutes les infos sont modifiable sauf le Code client. car il est utilisé dans une combobox

pour appeler le dit client.

A toi de ne pas te tromper lors de la création. ou de modifier dans la base.

merci Xmenpl,

En fait ce n'est pas cette partie du code qui me pose problème même si ta solution parait plus logique effectivement.

Mais c'est dans la partie

Private Sub CommandButton3_Click() ' BOUTON MODIFIER

Quand je veux modifier une fiche existante qui n'est pas forcément sur la dernière ligne du tableau je voudrai pouvoir modifier la structure du code client existant (puisque la fiche existe déjà) et en modifier le préfixe "PR-" en "CL-" si le bouton d'option est modifié. SI par exemple j'ai fait une facture pour le prospect "PR-0006" il devient client avec le code "CL-0006".

et ça je n'y arrive pas

Re, voilà le code pour ton boutton 3

Private Sub CommandButton3_Click() ' BOUTON MODIFIER

If ComboBox1.Value = "" Then MsgBox "Veuillez renseigner le champs'Société' ou indiquer 'Particulier' ": Exit Sub
If ComboBox2.Value = "" Then MsgBox "Veuillez renseigner le champs 'Nom' ": Exit Sub
If TextBox10.Value = "" Then MsgBox "Veuillez renseigner le champs 'Mail' ": Exit Sub

Dim modif As Integer

If Not ComboBox1.Value = "" Then
Sheets("Clients").Select

modif = ComboBox1.ListIndex + 5
Cells(modif, 1) = ComboBox1.Value
Cells(modif, 2) = ComboBox3.Value
Cells(modif, 3) = ComboBox2.Value
Cells(modif, 4) = TextBox1.Value
Cells(modif, 5) = TextBox9.Value
Cells(modif, 6) = TextBox10.Value
Cells(modif, 7) = TextBox2.Value
Cells(modif, 9) = ComboBox5.Value
Cells(modif, 10) = TextBox5.Value
Cells(modif, 11) = TextBox6.Value
Cells(modif, 12) = ComboBox4.Value

' Vérifier si option client validé
If Me.OptionButton2.Value = True Then
'Modification du PR el CL
MsgBox Me.TextBox8.Value
Cells(modif, 14) = "CL" & Right(Me.TextBox8.Value, 5)
Else
Cells(modif, 14) = Me.TextBox3.Value
End If

For Each Ctrl In Frame1.Controls
        If Ctrl.Value = True Then
            Cells(modif, 15) = Ctrl.Caption ' mise à jour de la colonne statut du client
           Exit For
    End If
Next Ctrl
MsgBox ("Modification effectuée")
End If
Unload UserFormClients
UserFormClients.Show 0
End Sub

Ça devrait fonctionner

Re,

Autre méthode on ajoute une textbox11 pour récupérer le numéro client quand on utilise ton bouton recherche.

Ensuite on utilise ton code de façon identique mais en utilisant le numéro contenu dans la textbox11.

17contact-4.xlsm (226.15 Ko)

Nota si cela gène on peut mettre la textbox11 en invisible.

merci infiniment xmenpl et Boulii038

Je n'ai pas réussi à faire fonctionner la solution de Boulii038, quelque chose doit m'échapper.

Cependant la solution de xmenpl fonctionne nickel, j'ai mis un peu de temps avant de trouver les modif de code dans le sub "recherche par société". Il fallait bien remplir cette textbox11.

Du coup j'ai compris le principe de l'index par rapport à la combobox en mode recherche, même si la notion de no-ligne et ligne, m'est encore un peu obscure (j'ai recopié bêtement)

J'ai également modifié le code pour la "recherche par nom" et tout fonctionne nickel.

C'est comme cela qu'on progresse !

Merci encore pour votre temps, je passe le sujet comme résolu

Rechercher des sujets similaires à "modification partielle code client bouton option"