modification d'une ligne dans une list box

phileasdav

XLDnaute Junior
Bonjour a tous ;

Je fais encore appel a vos talents pour ce probleme;
j'ai une list box dans une userform dans laquelle quand je double clique sur une des lignes celle ci ouvre une autre userform qui affiche les valeurs de celle ci , jusque là tout va bien!!!
Là ou ça se gate:mad:; c'est que je souhaite par un bouton que j'ai appelé "modif ok" modifié les valeurs de cette ligne . et là il me recrée une autre ligne alors que je veux seulement modifier la ligne existante !!ci dessous le code.:confused:
précision : ce code est dans l'userform 1 alors que la liste box est dans l'userform 2


merci d'avance

Private Sub modif_ok_Click()

'déclaration des variables
Dim donnee As Range
Dim i As Double ' i est la derniere ligne
Dim k As Date ' k est la date du jour
Dim ligneaconsulter As Long
Dim lst_personnes As ListBox ' lst_personnes est la list box de l'USF 2

ActiveSheet.Unprotect Password:="a"
Application.ScreenUpdating = False

If Sheets("Tableau").Range("a6").Value = "" Then
i = 1
Else
i = Sheets("Tableau").Range("a6").End(xlDown).Row
End If

ligneaconsulter = Sheets("Tableau").Range(Range("a6"), Range("a6").End(xlDown)) _
.Find(lst_personnes.Value).Row

' donne a k la valeur de la cellule g4 : date
k = Sheets("tableau").Range("f4").Value

'charge dans le tableau les données saisies dans l'USF
'permet de donner un numéro de ligne
With Sheets("Tableau")

.Range("a" & ligneaconsulter).Value = Sheets("tableau").Range("a" & ligneaconsulter).Value
.Range("b" & ligneaconsulter).Value = k
.Range("c" & ligneaconsulter).Value = cbx_faction.Value

.Range("e" & ligneaconsulter).Value = cbx_trigramme.Value

.Range("g" & ligneaconsulter).Value = cbx_localisation_service.Value
.Range("h" & ligneaconsulter).Value = cbx_localisation_machine.Value
.Range("i" & ligneaconsulter).Value = cbx_localisation_secteur.Value
.Range("j" & ligneaconsulter).Value = cbx_type_intervention.Value
.Range("k" & ligneaconsulter).Value = cbx_intervention_catégorie.Value
.Range("l" & ligneaconsulter).Value = txt_lien

.Range("n" & ligneaconsulter).Value = txt_description.Value
.Range("o" & ligneaconsulter).Value = cbx_nom_assignation.Value
.Range("q" & ligneaconsulter).Value = cbx_nom_correction.Value

.Range("s" & ligneaconsulter).Value = txt_description_correction
.Range("t" & ligneaconsulter).Value = cbx_nom_validation
.Range("v" & ligneaconsulter).Value = cbx_nom_cloture

End With

If cbx_nom_assignation <> "" Then
Sheets("Tableau").Range("p" & ligneaconsulter).Value = k
End If
If cbx_nom_correction <> "" Then
Sheets("Tableau").Range("r" & ligneaconsulter).Value = k
End If
If cbx_nom_validation <> "" Then
Sheets("Tableau").Range("u" & ligneaconsulter).Value = k
End If
If cbx_nom_cloture <> "" Then
Sheets("Tableau").Range("w" & ligneaconsulter).Value = k
End If
Application.ScreenUpdating = True
ActiveSheet.Protect Password:="a"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowSorting:=True, AllowFiltering:=True
Unload Me
End Sub
 

job75

XLDnaute Barbatruc
Re : modification d'une ligne dans une list box

Re, et salut ChTi,

merci mais meme en remplaçant ton code par celui ci , ça ne marche pas !:mad:

UserForm2.lst_personnes.List(i) = "Tableau!a6:x" & i

apparemment; la procédure ne reconnait pas la liste box.

Avec votre formule, pour i = 10 par exemple, vous voulez inscrire en 10ème position dans la ListBox le texte : "Tableau!a6:x10", c'est bien ça que vous voulez ?

Il faut évidemment que l'UserForm2 ait été chargé et seulement masqué (par Hide). Surtout pas déchargé par Unload...

A+
 

jeanpierre

Nous a quitté
Repose en paix
Re : modification d'une ligne dans une list box

Bonjour le fil,

Retirer quelques données ou un peu plus si necessaire, il n'y a pas besoin de tout et le Zipper surtout.

Clic droit sur ton fichier dans l'explorateur Windows et Envoyer vers/Dossier compressé... c'est celui-là que tu envoies.

Bon après-midi.

Jean-Pierre
 

JNP

XLDnaute Barbatruc
Re : modification d'une ligne dans une list box

Bonjour le forum :),
Pour faire transiter des données d'un USF à l'autre, une possibilité est de déclarer des variables en Public et de les utiliser dans les 2 USF.
Bonne journée :cool:
 

skoobi

XLDnaute Barbatruc
Re : modification d'une ligne dans une list box

Bonjour tout le monde,

Fais les modifications suivantes:

1- cré un module dans lequel tu y mets juste ceci:
Code:
Public ligneaconsulter As Long

2- dans le code Private Sub modif_ok_Click() du userform1:
supprime ceci:
Code:
[FONT=Arial]If Sheets("Tableau").Range("a6").Value = "" Then[/FONT]
[FONT=Arial]i = 1[/FONT]
[FONT=Arial]Else[/FONT]
[FONT=Arial]i = Sheets("Tableau").Range("a6").End(xlDown).Row[/FONT]
[FONT=Arial]End If[/FONT]
Plus:
a- supprime la ligne
Code:
Dim ligneaconsulter As Long
b- supprime la ligne
Code:
Dim i As Double ' i est la derniere ligne
c- remplace la variable "i" par ligneaconsulter partoût dans le code

3- dans le code Private Sub lst_personnes_DblClick(ByVal Cancel As MSForms.ReturnBoolean) du userform2:
supprime la ligne
Code:
Dim ligneaconsulter As Long

Car quoi que tu fasses dans l'userform de saisie, cela allait modifier systématiquement la dernière ligne "i"…
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
375
Réponses
4
Affichages
242

Statistiques des forums

Discussions
312 685
Messages
2 090 938
Membres
104 703
dernier inscrit
romla937