Bouton modifier aide
Bonjour,
j'ai eu beau lire les sujets à ce propos je ne réussis pas à faire fonctionner mon bouton ''modifier'' de mon formulaire
Mes enregistrements doivent se faire sur plusieurs feuilles différentes selon la localisation des commandes.
J'aimerais pouvoir modifier sans bouton recherche si possible,
sinon, comment faire ?
Je met en pièce jointe mon Excel.
Merci beaucoup de votre aide
Bonjour,
Déjà, pour faire une modification, il te faut faire une recherche dans tes feuilles pour trouver les valeurs à modifier. Pour commencer, voici une piste, tu poses une ListBox sur ta Form nommée "ListBox1" et tu colles le code ci-dessous dans le module du formulaire :
Private Sub Rechercher_Click()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer
With ListBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "95;95;95;0"
For Each Fe In Worksheets
With Fe: Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
Set Cel = Plage.Find(txtProjet.Text, , xlValues, xlWhole)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
I = I + 1
.AddItem Fe.Name
.Column(1, I - 1) = Cel.Offset(, 1).Value
.Column(2, I - 1) = Cel.Offset(, 2).Value
.Column(3, I - 1) = Cel.Row
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End If
Next Fe
End With
End Sub
Private Sub ListBox1_Click()
With ListBox1
MsgBox "Feuille : " & .List(.ListIndex, 0) & vbCrLf & _
"Divison : " & .List(.ListIndex, 1) & vbCrLf & _
"Date : " & .List(.ListIndex, 2) & vbCrLf & _
"Numéro de ligne (cachée) : " & .List(.ListIndex, 3)
End With
End Sub
Pour tester, tu sélectionnes un projet dans ta ComboBox et tu cliques sur le bouton "Rechercher", si trouvé, la ListBox se remplie, tu cliques sur un des éléments de cette dernière, un message s'affiche avec les valeurs de la ligne. Une colonne est cachée (largeur 0) dans la ListBox afin de mémoriser le numéro de la ligne, c'est à partir de ce numéro de ligne qu'il sera possible de faire les modification puisque le nom de la feuille correspondante es connue.
En attendant plus de précisions sur ce que tu veux !
Merci beaucoup pour ton aide, à voir le code je n'étais vraiment pas là
Un projet comprend plusieurs divisions.
Est-ce possible de faire une recherche par division plutôt que par projet, et ensuite modifier cette même division
(dans le cas où elle aurait été mal rentrée) ?
Par division :
Private Sub Rechercher_Click()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer
With ListBox1
.Clear
.ColumnCount = 4
.ColumnWidths = "95;95;95;0"
For Each Fe In Worksheets
With Fe: Set Plage = .Range(.Cells(1, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
Set Cel = Plage.Find(txtDivision.Text, , xlValues, xlWhole)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
I = I + 1
.AddItem Fe.Name
.Column(1, I - 1) = Cel.Offset(, -1).Value 'code du projet (-1 car colonne de gauche)
.Column(2, I - 1) = Cel.Offset(, 1).Value 'date
.Column(3, I - 1) = Cel.Row 'numéro de ligne
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End If
Next Fe
End With
End Sub
Private Sub ListBox1_Click()
With ListBox1
MsgBox "Feuille : " & .List(.ListIndex, 0) & vbCrLf & _
"Projet : " & .List(.ListIndex, 1) & vbCrLf & _
"Date : " & .List(.ListIndex, 2) & vbCrLf & _
"Numéro de ligne (cachée) : " & .List(.ListIndex, 3)
End With
End Sub
Je suppose que tu commences à programmer, si j'ai un conseil à te donner, dans le VBE, tu cliques sur "Outils" --> "Options..." onglet "Editeur", coches la case "Déclaration des variables obligatoire" ce qui aura pour effet d'ajouter à tous les modules quels qu'ils soient "Option Explicit" ce qui va rendre obligatoire de déclarer toutes le variables que tu vas utiliser, c'est pour préserver ton cuir chevelu !