VBA bouton modifier

Bonsoir à tous !

je débute le VBA, j'apprends petit à petit !

Malgré plusieurs lecture, de forum, page internet ou même regarder des vidéos YouTube, je n'arrive pas à faire fonctionner mon bouton modifier dans mon formulaire...

Mon bouton formulaire est dans ma feuille formulaire, ma base qui doit être modifier suivant le formulaire est dans ma feuille "EXPE".

Après plusieurs lecture sur internet, j'ai copié un code, pour le retranscrire sur le mien... et patatra, je ne comprend pas..

Je ne comprend pas certaine ligne....

J'ai vraiment besoin qu'on m’explique, ça m’intéresse beaucoup...Mais ça n’empêche pas que mon cerveau ne veut pas comprendre... j'ai trouvé ce code sur cellulexcel.blogpost

CODE TROUVE SUR INTERNET POUR LE BOUTON MODIFIER

'Correspond au programme du bouton MODIFIER

Private Sub CommandButton2_Click()

Dim Ligne As Long

Dim I As Integer

If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then

If Me.ComboBox1.ListIndex = -1 Then Exit Sub Je ne comprends pas cette phrase, a quelle case je peux attribué "le combobox1"

Ligne = Me.ComboBox1.ListIndex + 2

For I = 1 To 8 > ICI, je comprends que c'est pour la variable I= colonne 1 à 8

If Me.Controls("TextBox" & I).Visible = True Then

Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)

End If

Next I

End If 'fin de la condition

J'aimerai le retranscrire sur le mien... mais ne comprenant pas les phrases...

Sachant que je veux que ça modifie mais ne ré-créé pas une ligne en plus...

ci-joint mon fichier

Je désespère vraiment...

Merci en tout les cas de m'avoir lu...

Sylvie

31feuille-1.7z (208.97 Ko)

Bonjour,

If Me.ComboBox1.ListIndex = -1 Then

Si aucune sélection n'a été effectuée dans la Combo...

For I = 1 To 8

Initialise une boucle de 1 à 8...

Eh non ! ce ne sont pas les colonnes ! Ça suit la numérotation des TextBox... Les colonnes correspondantes, ce sera I+1 !

D'ailleurs pas malin d'utiliser certaines majuscules qu'on peut confondre... ce que ne font pas les habitués...

Si tu as du mal à lire, comment peux-tu savoir que ce code correspond à ta situation ?

Tu serais inspiré de déposer ton fichier, non compressé...

Et la prochaine fois mettre le code que tu cites sous balises Code, comme je l'ai fait.

Cordialement.

Bonjour Sylvie, bonjour MFerrand

Voici ton fichier amélioré ( j'ai codé le bouton recherche et le bouton modifié)

Ce n'est pas au top, car à midi , je compte bien me nourrir

Teste déjà cela

80client-tournee.7z (840.56 Ko)

Dis-moi

A+

Bonjour,

Merci de vos réponse à tout les deux,

Je regarde cela de ce pas, et vais essayer de comprendre le code,

et reviens vers vous

Merci de votre aide à tous,

ça me donne du courage !!

Re

j'ai fait une erreur

prendre ce fichier :

41client-tournee.7z (59.00 Octets)

A+

fichier vide pour moi ? désolé hihi

Me revoilà,

j'ai essayé la fonction modifier, après essai,

Celui ci à l'air de vouloir fonctionner, bien que rechercher est lié et à je pense un petit soucis !

Pour la fonction recherche

Celui ci ne recherche et n'arrive que à me donner les infos de mon dernier client, dernière ligne j'ai l'impression ?

Pour compléter ton code, et que ma recherche aboutisse à un résultat sûre,

J'aimerai,que dans la fonction recherche ,que cela ne me prenne pas que le nom en recherche mais aussi le jour

J'ai donc regardé ton code :

Private Sub btn_recherche_Click()
    Set ws = Sheets("EXPE")
    dlig = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row

    For I = 7 To dlig
        If ws.Range("G" & dlig).Value = Cbo_recherche.Value Then

End Sub

Je suppose donc qu'il faut que je rajoute ma colonne F, dans votre code :

If ws.Range("G" & dlig).Value = Cbo_recherche.Value Then

????

Merci

Sylvie

Re

Voici le fichier modifié qui je l'espère ne sera pas vide

90client-tournee.7z (849.94 Ko)

A+

Après multiple essaie, la fonction recherche se met toujours sur la dernière ligne saisie ?

J'aimerai qu'il recherche dans tous les clients

Private Sub btn_recherche_Click()
    Set ws = Sheets("EXPE")
    dlig = ws.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row

    For I = 7 To dlig
        If ws.Range("G" & dlig).Value = Cbo_recherche.Value Then
            Txt_nom = Cbo_recherche.Value
            Cbo_jour_tournée = ws.Range("F" & dlig).Value
            txt_clé = ws.Range("B" & dlig).Value
            txt_code = ws.Range("C" & dlig).Value
            Cbo_ini_tournée = ws.Range("A" & dlig).Value
            txt_nbre_eti = ws.Range("D" & dlig).Value
            Cbo_nom_tournée = ws.Range("E" & dlig).Value
            txt_chauffeurs = ws.Range("J" & dlig).Value
            txt_expés = ws.Range("H" & dlig).Value
        End If
    Next

End Sub

Merci

Re

Cela recherche bien tous les clients

Prend mon dernier fichier

A+

Re et surtout merci de ton aide !

J'ai pris ton dernier fichier, mis 3 clients test,

Client : test 1 puis test 2 puis test 3,

je veux rechercher le client test 2,

les cases du formulaire reste vide,

par contre si je prendre le dernier client test 3, là les case se complète bien.

Sylvie

Re

Tu n'as pas pris mon dernier fichier

Le premier ,j'avais fait une erreur dans la recherche

For i = 7 To dlig
        If ws.Range("G" & dlig).Value = Cbo_recherche.Value Then
            Txt_nom = Cbo_recherche.Value
            Cbo_jour_tournée = ws.Range("F" & dlig).Value
            txt_clé = ws.Range("B" & dlig).Value
            txt_code = ws.Range("C" & dlig).Value
            Cbo_ini_tournée = ws.Range("A" & dlig).Value
            txt_nbre_eti = ws.Range("D" & dlig).Value
            Cbo_nom_tournée = ws.Range("E" & dlig).Value
            txt_chauffeur = ws.Range("J" & dlig).Value
        End If
    Next

à remplacer par

For i = 7 To dlig
        If ws.Range("G" & i).Value = Cbo_recherche.Value Then
            Txt_nom = Cbo_recherche.Value
            Cbo_jour_tournée = ws.Range("F" & i).Value
            txt_clé = ws.Range("B" & i).Value
            txt_code = ws.Range("C" & i).Value
            Cbo_ini_tournée = ws.Range("A" & i).Value
            txt_nbre_eti = ws.Range("D" & i).Value
            Cbo_nom_tournée = ws.Range("E" & i).Value
            txt_chauffeur = ws.Range("J" & i).Value
        End If
    Next

Revois

A +

Merci Merci Merci en effet cela fonctionne !!!

Je vais donc essayer de continuer !!!

Je reviendrai surement vers toi, si cela ne te dérange pas !

Sylvie

Re

Merci de tes mercis

A + ???

surtout + oui snifffff !!!!

Après plusieurs test, de modifs, de recherche, pour vérifier que tout va bien....

(Mme la marquise, tout va très bien, tout va très bien... )

Le bouton modifier fonctionne bien seulement, il ne modifie pas ma donnée concernant le jour de tournée :

If ws.Range("G" & i).Value = Cbo_recherche.Value And ws.Range("F" & i).Value = Cbo_jour_tournée Then
            ws.Range("G" & i).Value = Txt_nom
            ws.Range("F" & i).Value = Cbo_jour_tournée

???

Je suppose que ça à un rapport avec la première ligne du code :

If ws.Range("G" & i).Value = Cbo_recherche.Value And ws.Range("F" & i).Value = Cbo_jour_tournée

Mon client ne peut pas changer de jour....Vont pas vouloir rester avec moi !!! ahhhhhhhhhhhh

Et juste pour moi, pour être moins bête, si je veux que dans ma case Recherche il y ai plus d'infos (genre deux colonne), c'est aménageable sur mon code déjà existant ? ou du coup ça le modifie complétement ?

Sylvie

Re

Il est évident que l'on ne peut pas modifier le jour de la tournée dans ces conditions; Tu veux que la recherche pour modification se fasse sur client et jour de tournée , donc si le jour est modifié , pas d'égalité , donc pas de mise à jour !!!

A réfléchir

A++

Peut-être pouvons-nous lors de la modification du jour de tournée demander :

Etes- vous sûr etc...

si oui, mettre un flag qui fera que nous chercherons le client à modifier que sur son nom. ????

En faite, pour expliquer clairement mon formulaire final que j'aimerai :

J'ai mon client, par exemple "Georges", il à toutes ces infos propre à lui mais je veux qu'elle puisse être modifiables, des fois qu'il change d'avis,

Ou même si Georges a été racheté par Ginette, Georges devient donc Ginette (Et Ginette prend la ligne à Georges comme ça y a pas trop de données partout).

Je pense que tu as compris dés le début ce que je veux,

J'arrive donc à tous modifier (même le nom qui du coup, dans la barre de recherche et lui aussi remplacer)

Mais le jour de tournée du coup non.

Et la est mon soucis;

Sylvie

RE

Aïe aïe aïe....

Si je comprends bien, je ne vois qu'une solution :

On lance la recherche... et là on garde la ligne trouvée.

Si georges est en ligne 12 , on garde 12 en mémoire et là , lors de la modification, on remplace la ligne 12 par tout ce qui a été saisi dans la grille ??? Je ne vois que cela d'après tes infos..

Est-ce cela??

Donc georges devient par exemple paul...avec les infos saisies

????

Excuse c'est moi qui me suis mal exprimée,

j'ai retirée

And ws.Range("F" & i).Value = Cbo_jour_tournée

Car au final je ne pense pas que ça soit utile,

Cependant et c'est la ou je me suis mal exprimée,

c'est que dans ma Cbo_recherche, j'aimerai qu'il y ai le nom du client ainsi que le jour de sa tournée, deux infos en une quoi.

excuse moi si j’avais pas compris sur le coup,

Sylvie

Rechercher des sujets similaires à "vba bouton modifier"