[RESOLU] Modification des données via un userform

diablo4713

XLDnaute Nouveau
Bonjour à tous ;)

J'ai un "userform" qui me permet de faire une recherche et modification d'un client.

la recherche fonctionne très bien.
Par contre la modification ne fonctionne que sur le Nom et pas sur les autres données.

Je sèche complètement!!

Je cherche depuis ce matin, j'ai fais une multitudes tests et de modifs et toujours pas de résultats la seul donné qui ce modifie c'est le "nom"!

La solution est chercher sur un autre forum aussi, et certain on réussi, une fois, à le faire fonctionné.
Dès qu'il faut refaire une modif, c'est le même résultat.

Cette déclaration ce trouve au tout début de l' userform
VB:
Dim no_ligne As Integer

et voici le code de mon bouton (elle permet de verifier si les txb obligatoires sont complétées)
VB:
Private Sub CommandButton_modifier_Click()
  If Not IsOKTxtBx Then
  MsgBox "Veuillez renseigner les champs obligatoires (*)"
  Exit Sub
  End If
modifier
End Sub

et le code pour l'appel "modifier"
VB:
Sub modifier()
   With ActiveSheet
    'If Not ComboBox1.Value = "" Then
no_ligne = ComboBox1.ListIndex + 4
       Cells(no_ligne, 2) = TBNom.Value
       Cells(no_ligne, 3) = TBPre.Value
       Cells(no_ligne, 5) = TBSoc.Value
       Cells(no_ligne, 6) = TBAd1.Value
       Cells(no_ligne, 7) = TBCp.Value
       Cells(no_ligne, 8) = TBVille1.Value
       Cells(no_ligne, 9) = TBPays1.Value
       Cells(no_ligne, 11) = TBAd2.Value
       Cells(no_ligne, 12) = TBCp2.Value
       Cells(no_ligne, 13) = TBVille2.Value
       Cells(no_ligne, 14) = TBPays2.Value
       Cells(no_ligne, 16) = TBTel.Value
       Cells(no_ligne, 17) = CDate(TBNais.Value)
       Cells(no_ligne, 18) = TBMail.Value
       Cells(no_ligne, 19) = TBInf.Value
MsgBox ("Modification effectuer")
'Else: MsgBox ("Veuillez sélectionné le n° de client ou le nom de la personne à modifier")
'Exit Sub
'End If
End With
Unload uf_client
uf_client.Show 0
End Sub

Merci à tous pour votre patience et votre aide :)
 

Pièces jointes

  • boutiqueV5.xlsm
    185 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Diablo, bonjour le forum,

Ta déclaration doit être Private et pas Dim pour avoir une portée sur tout le module. Ensuite tu la définies plusieurs fois alors qu'une seule fois suffit. J'ai aussi corrigé d'autre petites anomalies de ton code (deux fois la procédure cherche). Ton code modifié :

VB:
Private no_ligne As Integer

Private Sub ComboBox1_Change()
  If ComboBox1.Value <> "" Then
  no_ligne = ComboBox1.ListIndex + 4
  Cherche
  End If
End Sub

Private Sub ComboBox2_Change()
  If ComboBox2.Value <> "" Then
  no_ligne = ComboBox2.ListIndex + 4
  End If
End Sub

Private Sub CommandButtonModifier_Click()
  If Not IsOKTxtBx Then
  MsgBox "Veuillez renseigner les champs obligatoires (*)"
  Exit Sub
  End If
modifier
End Sub

Private Sub CommandButton_annuler_Click()
Unload Me
End Sub

Sub Cherche()
  ComboBox1.Value = Cells(no_ligne, 1).Value
  ComboBox2.Value = Cells(no_ligne, 2).Value
  TBNom.Value = Cells(no_ligne, 2).Value
  TBPre.Value = Cells(no_ligne, 3).Value
  TBSoc.Value = Cells(no_ligne, 5).Value
  TBAd1.Value = Cells(no_ligne, 6).Value
  TBCp.Value = Cells(no_ligne, 7).Value
  TBVille1.Value = Cells(no_ligne, 8).Value
  TBPays1.Value = Cells(no_ligne, 9).Value
  TBAd2.Value = Cells(no_ligne, 11).Value
  TBCp2.Value = Cells(no_ligne, 12).Value
  TBVille2.Value = Cells(no_ligne, 13).Value
  TBPays2.Value = Cells(no_ligne, 14).Value
  TBTel.Value = Cells(no_ligne, 16).Value
  TBNais.Value = CDate(Cells(no_ligne, 17).Value)
  TBMail.Value = Cells(no_ligne, 18).Value
  TBInf.Value = Cells(no_ligne, 19).Value
End Sub

Sub modifier()
With Sheets("CLIENTS")
  .Cells(no_ligne, 2) = TBNom.Value
  .Cells(no_ligne, 3) = TBPre.Value
  .Cells(no_ligne, 5) = TBSoc.Value
  .Cells(no_ligne, 6) = TBAd1.Value
  .Cells(no_ligne, 7) = TBCp.Value
  .Cells(no_ligne, 8) = TBVille1.Value
  .Cells(no_ligne, 9) = TBPays1.Value
  .Cells(no_ligne, 11) = TBAd2.Value
  .Cells(no_ligne, 12) = TBCp2.Value
  .Cells(no_ligne, 13) = TBVille2.Value
  .Cells(no_ligne, 14) = TBPays2.Value
  .Cells(no_ligne, 16) = TBTel.Value
  .Cells(no_ligne, 17) = CDate(TBNais.Value)
  .Cells(no_ligne, 18) = TBMail.Value
  .Cells(no_ligne, 19) = TBInf.Value
End With
MsgBox ("Modification effectuer")
Unload uf_client
uf_client.Show 0
End Sub

Private Function IsOKTxtBx() As Boolean
Dim Ctrl As Control
IsOKTxtBx = True
  For Each Ctrl In Me.Controls
  If TypeOf Ctrl Is MSForms.TextBox Then
  If LCase(Ctrl.Tag) = "fill" And Len(Trim(Ctrl.Value)) = 0 Then
  Ctrl.SetFocus
  IsOKTxtBx = False
  Exit Function
  End If
  End If
  Next Ctrl
End Function
 

diablo4713

XLDnaute Nouveau
Bonjour Robert,

Merci de t'y être penché ;)

ta solution fonctionne, mais m’empêche de savoir faire une recherche par "nom"!

Mais entre temps une solution a été trouvée et qui permet de garder les deux recherches. merci a "Ausecour", d'un autre forum, pour ces recherches et solutions
(voir fichier joint)

Le probleme venait du fait que ma combobox2 et lier a "row source = b4:b200"
Du coup dès que je changes le nom dans cette colonne, ça appelle la macro private sub combobox2_change, qui elle même appelle la macro recherche qui va réinitialiser les autres contrôles avec les valeurs qui sont dans la feuille, puis après l'export des modifications continue...

Soit je changes le "change" de mon combobox par autre chose, soit je changes la façon d'initialiser la combobox2. Sinon ça ne marchera jamais
Se que j'ai fais.

VB:
Private Sub UserForm_Activate()
ComboBox2.List = Range("B4", Range("B" & Rows.Count).End(xlUp)).Value
End Sub
 

Pièces jointes

  • boutiqueV5ok.xlsm
    173.1 KB · Affichages: 49

Dydou76

XLDnaute Occasionnel
Bonsoir a tous,

j'espere etre au bon endroit pour poser ma question.
j'ai un petit programme de creation de fiche avec une sauvegarde d'un onglet (feuil1) qui s'enregistre en PDF sur mon disk dure
mais j'aimerai que ce fichier s'enregistre soit dans OneNote ou alors dans OneDrive.
Est ce possible ? et Si oui je ne trouve pas comment faire.
Si une personne pouvait m'aider svp...
Merci d'avance.

Denis
 

Discussions similaires

Réponses
77
Affichages
6 K

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611