Code se fonctionne incorrectement

salut tous les membres mon fichier est une planification des interventions preventifs la feuille 4 est une feuille de commande

simple clique sur intervention par semaine listbox s'ouvre que contient tous les interventions par semaine

dans le listbox il y a deux boutons modifier et supprimer

mon probléme est dans le bouton modifier si je clique sur une ligne puis sur le bouton modifier le formulaire s'ouvre des elments sont affiché mais si je termine le remplissage et je clique modifier lorsque je revient à la feuil1 je trouve que le modification toujours dans le ligne 4 or je vais que le ligne que j'ai deja selectionné dans le listbox sera modifié dans la feuille1 merci de m'aider sur cette probleme en urgent

ça ce le code de bouton modifier

Private Sub CommandButton1_Click()
Set f = ThisWorkbook.Worksheets("Feuil1")
    Dim rc As Integer
    rc = Int(Val(Label9.Caption))
    If Trim(désignation.Text) = "" Or Trim(élément.Text) = "" _
            Or Trim(tachedemandé.Text) = "" Or Trim(numerointervention.Text) = "" _
            Or Trim(datedebut.Text) = "" Or Trim(dateprochaine.Text) = "" _
            Or Trim(interveneur.Text) = "" Or Trim(tempsconsomé.Text) = "" _
            Or Trim(piecederechange.Text) = "" Or Trim(quantité.Text) = "" Then
        Mess = "Veuillez saisir :" & Chr(13)
        If Trim(désignation.Text) = "" Then
            'MsgBox ("Veuillez saisir la désignation")
            Mess = Mess & "* la désignation" & Chr(13)
        End If
        If Trim(élément.Text) = "" Then
            'MsgBox ("Veuillez saisir un élément")
            Mess = Mess & "* un élément" & Chr(13)
        End If
        If Trim(tachedemandé.Text) = "" Then
            'MsgBox ("Veuillez saisir la tache demandé")
            Mess = Mess & "* la tache demandé" & Chr(13)
        End If
        If Trim(numerointervention.Text) = "" Then
            'MsgBox ("Veuillez saisir le numero intervention")
            Mess = Mess & "* le numero intervention" & Chr(13)
        End If
        If Trim(datedebut.Text) = "" Then
            'MsgBox ("Veuillez saisir la date debut")
            Mess = Mess & "* la date debut" & Chr(13)
        End If
        If Trim(dateprochaine.Text) = "" Then
            'MsgBox ("Veuillez saisir la date prochaine")
            Mess = Mess & "* la date prochaine" & Chr(13)
        End If
        If Trim(interveneur.Text) = "" Then
            'MsgBox ("Veuillez saisir interveneur")
            Mess = Mess & "* l'interveneur" & Chr(13)
        End If
        If Trim(tempsconsomé.Text) = "" Then
            'MsgBox ("Veuillez saisir le temps consomé")
            Mess = Mess & "* le temps consommé" & Chr(13)
        End If
        If Trim(piecederechange.Text) = "" Then
            'MsgBox ("Veuillez saisir le piece de rechange")
            Mess = Mess & "* la piece de rechange" & Chr(13)
        End If
        If Trim(quantité.Text) = "" Then
            'MsgBox ("Veuillez saisir la quantité")
            Mess = Mess & "* la quantité" & Chr(13)
        End If
        If Mess <> "Veuillez saisir :" & Chr(13) Then
            MsgBox Mess
            Exit Sub
        End If
Else

f.Cells(rc + 4, 2) = Trim(désignation.Text)
f.Cells(rc + 4, 3) = Trim(élément.Text)
f.Cells(rc + 4, 4) = Trim(tachedemandé.Text)
f.Cells(rc + 4, 5) = Trim(numerointervention.Text)
f.Cells(rc + 4, 6) = Trim(datedebut.Text)
f.Cells(rc + 4, 7) = Trim(dateprochaine.Text)
f.Cells(rc + 4, 8) = Trim(interveneur.Text)
f.Cells(rc + 4, 9) = Trim(tempsconsomé.Text)
f.Cells(rc + 4, 10) = Trim(piecederechange.Text)
f.Cells(rc + 4, 11) = Trim(quantité.Text)
désignation.Text = ""
élément.Text = ""
tachedemandé.Text = ""
numerointervention.Text = ""
datedebut.Text = ""
dateprochaine.Text = ""
interveneur.Text = ""
tempsconsomé.Text = ""
piecederechange.Text = ""
quantité.Text = ""

End If
UserForm1.Show (False)
Me.Hide
End Sub

Bonjour,

le problème est ici:

rc = Int(Val(Label9.Caption))

selon le résultat décrit, rc est toujours = 0

il faudrait trouver la ligne selon la valeur de ListBox1.List(ListBox1.ListIndex

rc = Application.Match(ListBox1.List(ListBox1.ListIndex, 0), Sheets("Feuil2").Range("B:B"),0)

bonjour si je remplace

    rc = Int(Val(Label9.Caption))

par ce code

 rc = Application.Match(ListBox1.List(ListBox1.ListIndex, 0), Sheets("Feuil1").Range("B:B"),0)   

ili m'affiche un erreur d'execution 424 objet requis merci de ressoudre ce probleme

bonjour Exel pratique

je vient de changer le code publié précédemment pour bouton modifier par un nouveau code qu 'est le suivant pour pouvoir modifier une ligne sélectionné dans listbox et sera modifié egalement dans la feuille1 , ce code il m'affiche le message "voulez vous modifier cette ligne" mais tu clique ok rien que se passe aucune modification dans listbox et feuil1

remarque: bouton modifier dans userform2

listbox apparaît lorsque on clique sur bouton "intervention par semaine" feuil1

sélectionnez une ligne et clique modifier une formulaire s'ouvre ou vous devez mettre le modification

Private Sub CommandButton1_Click()
Dim Ctrl As Control
        Dim Ws As Worksheet
        Dim Ligne As Integer
        Dim I As Integer, ii

         If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, _
                              "Demande de confirmation") <> vbYes Then Exit Sub

  Set Ws = Sheets("Feuil1")

        If ListBox1 = "" Then Exit Sub ' ou se code If listbox1.ListIndex = -1 Then Exit Sub à la place de If listbox1 = "" Then Exit Sub
      'If listbox1.ListIndex = -1 Then Exit Sub
      Ligne = ListBox1.ListIndex + 2

      With Sheets("Feuil1")
            .Range("B" & Ligne).Value = désignation.Value
            .Range("C" & Ligne).Value = élément.Value
            .Range("D" & Ligne).Value = tachedemandé.Value
            .Range("D" & Ligne).Value = numerointervention.Value
            .Range("E" & Ligne).Value = datedebut.Value
            .Range("F" & Ligne).Value = dateprochaine.Value
            .Range("G" & Ligne).Value = interveneur.Value
            .Range("H" & Ligne).Value = tempsconsomé.Value
            .Range("I" & Ligne).Value = piecederechange.Value
            .Range("j" & Ligne).Value = quantité.Value
            End With

            MsgBox ("ligne modifiée")

           End Sub

merci de me donner une solution

il faut spécifier le UserForm du ListBox1

voir une exemple ici: https://forum.excel-pratique.com/cours-astuces/userform-en-cascade-t93816.html

Bonjour

sabv

voila le code nouveau code il m'affiche erreur de compilation sub attendu

Private Sub CommandButton1_Click()
Dim Ctrl As Control
        Dim Ws As Worksheet
        Dim Ligne As Integer
        Dim I As Integer, ii

         If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, _
                              "Demande de confirmation") <> vbYes Then Exit Sub

  Set Ws = Sheets("Feuil1")

        If ListBox1 = "" Then Exit Sub ' ou se code If listbox1.ListIndex = -1 Then Exit Sub à la place de If listbox1 = "" Then Exit Sub
      'If listbox1.ListIndex = -1 Then Exit Sub
      Ligne = ListBox1.ListIndex + 2

      With Sheets("Feuil1")
            .Range("B" & Ligne).Value = désignation.Value
            .Range("C" & Ligne).Value = élément.Value
            .Range("D" & Ligne).Value = tachedemandé.Value
            .Range("D" & Ligne).Value = numerointervention.Value
            .Range("E" & Ligne).Value = datedebut.Value
            .Range("F" & Ligne).Value = dateprochaine.Value
            .Range("G" & Ligne).Value = interveneur.Value
            .Range("H" & Ligne).Value = tempsconsomé.Value
            .Range("I" & Ligne).Value = piecederechange.Value
            .Range("j" & Ligne).Value = quantité.Value
            End With

            MsgBox ("ligne modifiée")

             Sub afficher_userform1_Click()
UserForm1.Show (False)
Me.Hide
End Sub

bonjour,

sans avoir essayé de comprendre ce que font tes macros il manque un end sub avant l'instruction

Sub afficher_userform1_Click()

bonjour merci de me repondre

si je fais

end sub

avant

Sub afficher_userform1_Click()

directement il passe à une autre code il me fait un trait aprés End sub et passe à une autre

merci de corriger mon probleme

salut excel pratique

personne peux m'aider sur ce problème svp j'attend une solution en urgent merci à tous

Bonjour,

le problème de "sub attendu" est-il corrigé ?

bonsoir h2so4 non pas de correction complètement comme j'ai mentionné precedément merci de me repondre en urgent

bonsoir,

peux-tu répondre à la question ?

as-tu encore un problème de "sub attendu "?

mets-nous ton fichier avec les macros.

bonsoir le probleme encore existe ça ce le code

    Private Sub CommandButton1_Click()
Dim Ctrl As Control
        Dim Ws As Worksheet
        Dim Ligne As Integer
        Dim I As Integer, ii

         If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, _
                              "Demande de confirmation") <> vbYes Then Exit Sub

  Set Ws = Sheets("Feuil1")

        If ListBox1 = "" Then Exit Sub ' ou se code If listbox1.ListIndex = -1 Then Exit Sub à la place de If listbox1 = "" Then Exit Sub
      'If listbox1.ListIndex = -1 Then Exit Sub
      Ligne = ListBox1.ListIndex + 2

      With Sheets("Feuil1")
            .Range("B" & Ligne).Value = désignation.Value
            .Range("C" & Ligne).Value = élément.Value
            .Range("D" & Ligne).Value = tachedemandé.Value
            .Range("D" & Ligne).Value = numerointervention.Value
            .Range("E" & Ligne).Value = datedebut.Value
            .Range("F" & Ligne).Value = dateprochaine.Value
            .Range("G" & Ligne).Value = interveneur.Value
            .Range("H" & Ligne).Value = tempsconsomé.Value
            .Range("I" & Ligne).Value = piecederechange.Value
            .Range("j" & Ligne).Value = quantité.Value
            End With

            MsgBox ("ligne modifiée")

           End If
           userform1.Show (False)
           End Sub

le probleme dans le bouton modifier ça le fichier

salut excel pratique je n'ai reçu aucune solution de mon probléme personne peux m'aider svp

Bonjour ing2017, h2so4, à tous,

ing2017, vous avez 7 UserForm dans votre projet, et vous ne spécifiez jamais cette objet,

par exemple il ne suffit pas d'écrire If ListBox1.ListIndex <> -1 Then

mais (toujours par exemple) il faut écrire,

If UserForm1.ListBox1.ListIndex <> -1 Then

merci de m repondre

Sabv

bon j'ai essayé par vootre correction mais l'exécution s'arrete au niveau" est vous modifié ce ligne" si tu clique ok pour confirmation rien que se passe et le modification ne fait pas.

le reste de code à partir de

 Set Ws = Sheets("Feuil1")

jusqu'a la fin de boucle n'est pas traité comme ce ci on a pas de code

merci de me trouver la solution voila le code modifié

Private Sub CommandButton1_Click()
Dim Ctrl As Control
        Dim Ws As Worksheet
        Dim Ligne As Integer
        Dim I As Integer, ii

         If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, _
                              "Demande de confirmation") <> vbYes Then Exit Sub

  Set Ws = Sheets("Feuil1")

        If ListBox1 = "" Then Exit Sub ' ou se code If listbox1.ListIndex = -1 Then Exit Sub à la place de If listbox1 = "" Then Exit Sub
    If UserForm1.ListBox1.ListIndex <> -1 Then
      Ligne = ListBox1.ListIndex + 2

      With Sheets("Feuil1")
            .Range("B" & Ligne).Value = désignation.Value
            .Range("C" & Ligne).Value = élément.Value
            .Range("D" & Ligne).Value = tachedemandé.Value
            .Range("D" & Ligne).Value = numerointervention.Value
            .Range("E" & Ligne).Value = datedebut.Value
            .Range("F" & Ligne).Value = dateprochaine.Value
            .Range("G" & Ligne).Value = interveneur.Value
            .Range("H" & Ligne).Value = tempsconsomé.Value
            .Range("I" & Ligne).Value = piecederechange.Value
            .Range("j" & Ligne).Value = quantité.Value
            End With

            MsgBox ("ligne modifiée")

       End If
       UserForm1.Show (False)

           End Sub

pourquoi avez-vous corrigé une seule ligne ?

salut

sabV

merci pour votre reponse au niveau fonctionnement maintenant sa marche mais reste un petit probleme

si tu choisi une ligne pour modifier aprés le modification je trouve qu'il sera affiché avant la ligne sélectionnée par deux ligne dans la feuille1 je crois le problémé au niveau ce code mais lorsque j'elimine le + 2 ili m'affiche un erreur

Private Sub CommandButton1_Click()
Dim Ctrl As Control
        Dim Ws As Worksheet
        Dim Ligne As Integer
        Dim I As Integer, ii

         If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, _
                              "Demande de confirmation") <> vbYes Then Exit Sub

  Set Ws = Sheets("Feuil1")

        If UserForm1.ListBox1 = "" Then Exit Sub ' ou se code If userform1.listbox1.ListIndex = -1 Then Exit Sub à la place de If listbox1 = "" Then Exit Sub
      If UserForm1.ListBox1.ListIndex <> -1 Then
      Ligne = UserForm1.ListBox1.ListIndex + 2

      With Sheets("Feuil1")
            .Range("B" & Ligne).Value = désignation.Value
            .Range("C" & Ligne).Value = élément.Value
            .Range("D" & Ligne).Value = tachedemandé.Value
            .Range("E" & Ligne).Value = numerointervention.Value
            .Range("f" & Ligne).Value = datedebut.Value
            .Range("G" & Ligne).Value = dateprochaine.Value
            .Range("H" & Ligne).Value = interveneur.Value
            .Range("I" & Ligne).Value = tempsconsomé.Value
            .Range("J" & Ligne).Value = piecederechange.Value
            .Range("K" & Ligne).Value = quantité.Value
            End With

            MsgBox ("ligne modifiée")
             End If
       UserForm1.Show (False)

           End Sub

lorsqu'aucune ligne n'est sélectionnée, la propriété ListIndex renvoie la valeur –1.

quand l'utilisateur sélectionne une ligne d'un contrôle ListBox, la valeur de la propriété ListIndex de la première ligne est = zéro,

donc si c'est la 2ème ligne qui est sélectionné ListIndex = 1 etc..

maintenant il faut ajuster à la feuille de données

par exemple la première ligne

ListIndex = 0

première ligne de Feuille de données = 3

là il faut ajouter +3

merci beaucoup

sabV

solution accepté mais la on ajout +4 merci autre fois

mais ici dans meme fichier j'ai un autre probleme au niveau d'affichage date est ce que tu peux m'aider merci d'avance

Rechercher des sujets similaires à "code fonctionne incorrectement"