louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009
-
8 sept. 2008 à 19:52
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
10 sept. 2008 à 06:26
bonjour
je souhaite savoir comment gerer une modification dune ligne de mon tableur excel via un userform
jai deja essaye bcp de fois sans succes...
merci
exemple concret;
colonne A colonne B colonne C
damien 17ans scolarise
adrien 18ans non scolarise
paul 19ans non inscrit
comment faire quel code pour via un userform supprimer la ligne de paul
ou la modifier
jai deja mon userform qui permet dajouter des personnes avec age et statut
je peux les rechercher aussi facilement mais une fois afficher comment dire modifier ou supprimer
jai creer le bouton modifier et le bouton supprimer et apres?
MERCI A TOUS
A voir également:
Modification du fichier excel via userform tres simple mais dur pour moi...merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 9 sept. 2008 à 18:29
Salut,
voici la nouvelle version du code de la form :
Option Explicit
Private Sub EffacerTout_Click() 'boutton effacer tout
Vider
End Sub
Private Sub identite_Change()
If Me.identite.Value <> Me.recherche.Value Or Me.recherche.Value = "" Then
Me.ajouter.Enabled = True
Me.mettreajour.Enabled = False
Me.supprimer.Enabled = False
Else
Me.mettreajour.Enabled = True
Me.ajouter.Enabled = False
Me.supprimer.Enabled = True
End If
End Sub
Private Sub identite_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim LigneSource As Long
With Sheets("Feuil1")
On Local Error Resume Next
LigneSource = .Columns("A").Find(Me.identite.Value, .Range("A1"), , , xlByRows, xlPrevious).Row
MsgBox Err
If Err = 0 Then 'si l'utilisateur a lui meme ecrit le nom et que ce nom est deja dans la liste
Call remplissage(LigneSource)
End If
End With
End Sub
Private Sub imprimer_Click()
Me.PrintForm
End Sub
Private Sub mettreajour_Click()
Dim ModifLigne As Long
'on recherche le nom choisi par l'utilisateur
On Local Error Resume Next
ModifLigne = Columns("A").Find(recherche.Value, Range("A1"), , , xlByRows, xlPrevious).Row
'Pour voir se qui se passe je bascule sur la feuille
Sheets("Feuil1").Activate
'Ici c'est le report de la saisie dans la feuille
With Sheets("Feuil1")
.Range("A" & ModifLigne).Value = Me.identite.Value
.Range("B" & ModifLigne).Value = Me.phone.Value
.Range("C" & ModifLigne).Value = Me.statut.Value
.Range("D" & ModifLigne).Value = Me.adresse.Value
.Range("E" & ModifLigne).Value = Me.entreprise.Value
.Range("F" & ModifLigne).Value = Me.reference.Value
.Range("G" & ModifLigne).Value = Me.investissement.Value
.Range("H" & ModifLigne).Value = Me.action.Value
.Range("I" & ModifLigne).Value = Me.email.Value
.Range("J" & ModifLigne).Value = Me.maj.Value
.Range("K" & ModifLigne).Value = Me.commentaire.Value
End With
End Sub
Private Sub rechercher_Click()
Dim LigneSource As Long
With Sheets("Feuil1")
On Local Error Resume Next
LigneSource = .Columns("A").Find(Me.recherche.Value, .Range("A1"), , , xlByRows, xlPrevious).Row
If Err <> 0 Then 'si l'utilisateur a lui meme ecrit le nom et que ce nom n'est pas dans la liste
MsgBox "le Nom specifié n'ai pas dans la liste ! ", vbExclamation
recherche.Value = ""
Err.Clear
Exit Sub
Else
Call remplissage(LigneSource)
End If
End With
End Sub
'Ce qu'il se passe quand on clique sur le Bouton "ajouter"
Private Sub ajouter_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
'ici je repère la dernière ligne vide pour la collection des données
L = Sheets("Feuil1").Range("C65536").End(xlUp).Row + 1
'ici un Test exemple pour identite, si elle est vide on est averti
If identite = "" Then
MsgBox "Vous n'avez rien saisi"
identite.SetFocus
Exit Sub
End If
'Pour voir se qui se passe je bascule sur la feuille
Sheets("Feuil1").Activate
'Ici c'est le report de la saisie dans la feuille
With Sheets("Feuil1")
.Range("A" & L).Value = identite.Value
.Range("B" & L).Value = phone.Value
.Range("C" & L).Value = statut.Value
.Range("D" & L).Value = adresse.Value
.Range("E" & L).Value = entreprise.Value
.Range("F" & L).Value = reference.Value
.Range("G" & L).Value = investissement.Value
.Range("H" & L).Value = action.Value
.Range("I" & L).Value = email.Value
.Range("J" & L).Value = maj.Value
.Range("K" & L).Value = commentaire.Value
End With
Me.mettreajour.Enabled = True
Me.ajouter.Enabled = False
Me.supprimer.Enabled = True
sort.ordre
End Sub
Private Sub UserForm_Initialize()
Me.mettreajour.Enabled = False
Me.supprimer.Enabled = False
End Sub
Sub remplissage(LigneSource As Long)
With Sheets("Feuil1")
Me.mettreajour.Enabled = True
Me.ajouter.Enabled = False
Me.supprimer.Enabled = True
Me.identite.Text = .Range("A" & LigneSource).Value
Me.phone.Text = .Range("B" & LigneSource).Value
Me.statut.Text = .Range("C" & LigneSource).Value
Me.adresse.Text = .Range("D" & LigneSource).Value
Me.entreprise.Text = .Range("E" & LigneSource).Value
Me.reference.Text = .Range("F" & LigneSource).Value
Me.investissement.Text = .Range("G" & LigneSource).Value
Me.action.Text = .Range("H" & LigneSource).Value
Me.email.Text = .Range("I" & LigneSource).Value
Me.maj.Text = .Range("J" & LigneSource).Value
Me.commentaire.Text = .Range("K" & LigneSource).Value
End With
End Sub
Sub Vider() 'Ici je vide les textbox
Me.ajouter.Enabled = True
Me.mettreajour.Enabled = False
Me.supprimer.Enabled = False
identite.Value = ""
phone.Value = ""
statut.Value = ""
adresse.Value = ""
entreprise.Value = ""
reference.Value = ""
investissement.Value = ""
action.Value = ""
email.Value = ""
maj.Value = ""
commentaire.Value = ""
'ici je remets le curseur en identite
Me.identite.SetFocus
End Sub
il faut imperativement remplacer le code existant par celui que je te donne ici. Pour profiter pleinnement de toute les modif il faut rajouter un bouton [Effacer Tout], nomé EffacerTout dans le code et qui sert a vider les textbox de la form.
Le bouton [modier] fonctionne maintenant. Tu veras que suivant la situation les boutons sont activés ou desactivés ce qui limite l'utilisateur ce qu'il a le droit de faire.
Par exemple si le nom saisi dans la textbox "Identite du Prospect" existe deja dans la base et que l'utilisateur clic dans une autre textbox toutes les textbox seront alors automatiquement remplis et seul les boutons modifier et supprimer seront activer. Par contre nom n'existe pas dans la base seul le bouton ajouter sera activer.
Autre modif, apres ajout d'un nouveau nom dans la base les textbox ne sont plus automatiquement vider mais par contre le bouton ajouter est alors desactiver et les boutons modifier et supprimer sont eux actcif.
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 8 sept. 2008 à 20:45
salut big fish,
les boutons sont dans le userform
jaimerai savoir ce que je met dans le code de ces boutons sachant que dans le code du bouton ajouter jai mis:
'Ce qu'il se passe quand on clique sur le Bouton "ajouter"
Private Sub ajouter_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
'ici je repère la dernière ligne vide pour la collection des données
L = Sheets("Feuil1").Range("C65536").End(xlUp).Row + 1
'ici un Test exemple pour identite, si elle est vide on est averti
If identite = "" Then
MsgBox "Vous n'avez rien saisi"
identite.SetFocus
Exit Sub
End If
'Pour voir se qui se passe je bascule sur la feuille
Sheets("Feuil1").Activate
'Ici c'est le report de la saisie dans la feuille
With Sheets("Feuil1")
.Range("A" & L).Value = identite.Value
.Range("B" & L).Value = phone.Value
.Range("C" & L).Value = statut.Value
.Range("D" & L).Value = adresse.Value
.Range("E" & L).Value = entreprise.Value
.Range("F" & L).Value = reference.Value
.Range("G" & L).Value = investissement.Value
.Range("H" & L).Value = action.Value
.Range("I" & L).Value = email.Value
.Range("J" & L).Value = maj.Value
.Range("K" & L).Value = commentaire.Value
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 8 sept. 2008 à 21:34
Ben pour la modif ou la supression 2 solutions :
soit apres avoir cliquer sur le bouton tu demande a l'utilisateur de selectionner une des cellules de la ligne a modifier ou supprimer
ou soit tu crés une nouvelle form dans la quelle tu met une combobox qui permet de coisir le nom a modifier ou a supprimer.
par exemple pour la modif a l'aide d'une autre form que j'appelerais ListeNom et qui contient une combobox, un bouton Valider et un bouton Annuler
dans le code de cette forme tu mets :
Private Sub ListeNom_Initialize() 'initialisation de la form
Dim LastName As Long
'recherche du dernier nom
LastName = Columns("A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
'on rempli la list de la combobox
ComboBox1.List = Range("A1:A" & LastName).Value
End Sub
Private Sub CommandButton1_Click() 'bouton validé
'un clic sur le bouton validé alors que le champs de la combobox est vide sera assimilé à un clic sur le bouton annulé
If ComboBox1.Value <> "" Then
Dim ModifLigne As Long
'on recherche le nom choisi par l'utilisateur
On Local Error Resume Next
ModifLigne = Columns("A").Find(ComboBox1.Value, Range("A1"), , , xlByRows, xlPrevious).Row
If Err <> 0 Then 'si l'utilisateur a lui meme ecrit le nom et que ce nom n'est pas dans la liste
MsgBox "le Nom specifié n'ai pas dans la liste ! ", vbExclamation
ComboBox1.Value = ""
Err.Clear
Exit Sub
End If
'comme tout est ok on remplis la userform1 a partir des données du nom choisi
With Sheets("Feuil1")
UserForm1.identite.Value = .Range("A" & ModifLigne).Value
UserForm1.phone.Value = .Range("B" & ModifLigne).Value
UserForm1.statut.Value = .Range("C" & ModifLigne).Value
UserForm1.adresse.Value = .Range("D" & ModifLigne).Value
UserForm1.entreprise.Value = .Range("E" & ModifLigne).Value
UserForm1.reference.Value = .Range("F" & ModifLigne).Value
UserForm1.investissement.Value = .Range("G" & ModifLigne).Value
UserForm1.Action.Value = .Range("H" & ModifLigne).Value
UserForm1.Email.Value = .Range("I" & ModifLigne).Value
UserForm1.maj.Value = .Range("J" & ModifLigne).Value UserForm1.commentaire .Value .Range("K" & ModifLigne).Value
End With
End If
Unload Me
End Sub
Private Sub CommandButton2_Click() 'bouton annulé
Unload Me
End sub
J'ai ecris tout ça ici donc pas tester. Voila y a plus qu'a...
Vous n’avez pas trouvé la réponse que vous recherchez ?
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 8 sept. 2008 à 21:50
ben il me faut un seul userform...
et que ca change directement dans excel
dis moi ou je pe te lenvoyer ce sera plus simple en le voyant
jai essayer ton code la 2eme partie sans succes...
merci
je te lenvoi et apres on parle du probleme sur codes sources pour les autres utilisateurs interesses
merci
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 8 sept. 2008 à 22:42
ben en faite je viens de regarder ton fichier et j'ai vu que tu as deja une combobox qui permet de selectionner un nom existant. En plus tu sais deja remplire ton formulaire une fois le nom selectionné.
Donc désolé mais je ne comprend quel est le probleme !
louvierseb
Messages postés63Date d'inscriptionmercredi 16 juillet 2008StatutMembreDernière intervention15 juillet 2009 8 sept. 2008 à 22:44
ben tu vois quand tu as le userform ouvert ajoute deja qq nouvo propsects
et apres va dans le menu deroulant en haut et cherche lun des prospect que tu as precedemment entre et fait rechercher
il va te lafficher dans les textbox avec les differents infos
et bien si je change la valeur dune des textbox ( info) et que je met "mise a jour" il la change directement dans excel
merci
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 9 sept. 2008 à 08:50
Salut,
Ce qui veut donc dire que avant d'appuyer sur Modifier ou Supprimer, tu as déjà sélectionné un Utilisateur.
Sert toi te ta fonction d'ajout pour t'aider.
Ta fonction d'ajout recherche la premiere ligne vide (NOTE: La variable L DOIT être de type LONG et non INTEGER)
'ici je repère la dernière ligne vide pour la collection des données
L = Sheets("Feuil1").Range("C65536").End(xlUp).Row + 1, ----
[../code.aspx?ID=41455 By Renfield]
Et bien tu peux la modifier pour que L prenne la valeur de la ligne ou se trouve l'utilisateur sélectionné ( [../auteur/BIGFISHLEVRAI/510670.aspx bigfish_le vrai] ,t'a d'ailleurs montrer qqch d'intéressant pour cela).
ModifLigne = Columns( "A" ).Find(ComboBox1.Value, Range("A1"), , , xlByRows, xlPrevious).Row
A toi de le modifier et d'adapter à tes besoins...
car une fois que tu as la ligne ou se trouve l'utilisateur sélectionné,
Modifier: => a peu de chose près la fonction d'ajout.
Supprimer: =>
'L Ligne as supprimer
Call Rows(L & ":" & L).Delete(xlUp)
, ----
[../code.aspx?ID=41455 By Renfield]
Voilà tu as a peu près tout pour t'en tirer seul. pas besoin d'envoi de fichier pour que l'on fasse le boulot à ta place