KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 11:30:22

[VBA]modifications de données

Rechercher : dans
[VBA]modifications de données
par jc41
 Fil de Discussions
Statut : Non résolu
vendredi 12 janvier 2007 à 14:17:45
bonjour à tous
je suis débutant dans l'utilisation des macros et vba
j'ai créé un userform pour insérer mes données dans excel via un formulaire à remplir
mais je bloque sur la marche à suivre pour faire le chemin inverse
je m'explique : une fois rentré mes données je vais devoir les modifier de temps en temps et donc je souhaiterais par exemple avoir une cmdbouton pour retourner à mon formulaire avec les informations de la ligne choisie et pouvoir les modifier et de nouveau les réinsérer
merci de votre aide et je reste à disposition pour éclaircir mon souhait si je suis pas compréhensible pour tous
Configuration: Windows 2003
Internet Explorer 6.0
Répondre à jc41  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 16 janvier 2007 à 00:12:30 Fil de Discussions
bonjour

je doute un peu que tu puisses faire ta modification avec le userform de création,
de manière simple et efficace.

lorsque tu crées un nouvel enregistrement, tu insères ta ligne en bas de feuille,
du moins je suppose.

lorsque tu modifies, tu dois remettre les données sur la même ligne.
dans ce cas là tu peux peut-être modifier ta ligne en double cliquant dessus,
puis ouvrir une userform avec les données de la ligne
tout cela lors de l'événement before double clic,
et ce sera ainsi beaucoup plus facile à gérer.

si je n'ai pas bien compris, précise ton projet.

toujours zen
Répondre à gbinforme

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jc41, le mardi 16 janvier 2007 à 08:03:24 Fil de Discussions
bonjour

c'est tout à fait mon besoin, mais je ne connais pas le code pour rappeler mes données dans un userform de modification, admettons que je saisie un nom, prénom, adresse, ville et cp, pour un changement d'adresse je dois modifier les champs adresse ville et cp. maintenant un mariage je dois modifier le nom. je pense que pour simplifier mon formulaire je dois rappeler toutes mes donées donc réutiliser un userform quasi identique à celui de création ?
Merci de votre aide.
Répondre à jc41

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 16 janvier 2007 à 12:33:37 Fil de Discussions
bonjour


je pense que pour simplifier mon formulaire je dois rappeler toutes mes donées donc réutiliser un userform quasi identique à celui de création ?
C'est tout à fait cela, le formulaire est identique, mais la fonction est complètement différente.

je ne connais pas le code pour rappeler mes données dans un userform de modification,

Dans la feuille concernée, tu crées cette macro :
Public Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)

la valeur sel.row te donnes la ligne sur laquelle sont tes données.

admettons que je saisie un nom, prénom, adresse, ville et cp
donc le nom est en colonne 1, le prénom est en colonne 2,etc...

Pour ramener, les données dans le formulaire tu mets :

user.nom = cells(sel.row,1).value avec user.nom remplacé par ta zone de formulaire.

idem pour le reste.

après modification, c'est l'inverse :
cells(sel.row,1).value = user.nom

voilà la base et bon courage pour la réalisation.

--

toujours zen
Répondre à gbinforme

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par jc41, le mardi 16 janvier 2007 à 14:51:34 Fil de Discussions
tout d'abord merci de ton aide, j'ai saisie ta macro seulement j'ai une erreur de compilation qui survient pour simplifier la chose je te joint mon code de départ :

>pour le code feuille :

Private Sub lancemachinesvendues_Click()
MachinesVendues.Show
End Sub

Private Sub machinesvendues_Click()

End Sub

Private Sub Worksheet_beforedoubleclick(ByVal sel As Range, cancel As Boolean)

MachinesVendues = Cells(sel.Row, 1).Value

End Sub


>pour le userform :

Private Sub CmdAnnuler_Click()
Unload Me
End Sub
Private Sub CmdOK_Click()
'on teste la saisie du client...
If Me.TxtClient.Text = "" Then
MsgBox "vous devez entrer un client"
Me.TxtClient.SetFocus
Exit Sub
End If
'on teste la saisie du département...
If Me.TxtDpt.Text = "" Then
MsgBox "vous devez entrer un département"
Me.TxtDpt.SetFocus
Exit Sub
End If
'on teste la saisie de la marque...
If Me.TxtMarque.Text = "" Then
MsgBox "vous devez entrer la marque"
Me.TxtMarque.SetFocus
Exit Sub
End If
'on teste la saisie de la type...
If Me.Txttype.Text = "" Then
MsgBox "vous devez entrer le type"
Me.Txttype.SetFocus
Exit Sub
End If
'on teste la saisie de la N°Série...
If Me.Txtnserie.Text = "" Then
MsgBox "vous devez entrer un N° de série"
Me.Txtnserie.SetFocus
Exit Sub
End If
'on teste la saisie de l'année ...
If Me.Txtannee.Text = "" Then
MsgBox "vous devez entrer l'année"
Me.Txtannee.SetFocus
Exit Sub
End If
'on teste la saisie de la pression...
If Me.Txtpression.Text = "" Then
MsgBox "vous devez entrer la pression"
Me.Txtpression.SetFocus
Exit Sub
End If
'on teste la saisie de nbh/an...
If Me.Txtnbhan.Text = "" Then
MsgBox "vous devez entrer le nombre d'heure de fonctionnement par an"
Me.Txtnbhan.SetFocus
Exit Sub
End If
'on teste la saisie de nbh/cycle...
If Me.Txtnbhcycle.Text = "" Then
MsgBox "vous devez entrer le nombre d'heure par cycle d'entretien"
Me.Txtnbhcycle.SetFocus
Exit Sub
End If
'conversion du nom et prénom en NOMPROPRE
clientconverti = Application.WorksheetFunction.Proper(Me.TxtClient.Text)
marqueconverti = Application.WorksheetFunction.Proper(Me.TxtMarque.Text)
'mise en place des données dans la feuille de calcul
Range("a65536").End(xlUp).Offset(1, 0).Value = clientconverti
Range("c65536").End(xlUp).Offset(1, 0).Value = marqueconverti
Range("b65536").End(xlUp).Offset(1, 0).Value = Me.TxtDpt.Text
Range("d65536").End(xlUp).Offset(1, 0).Value = Me.Txttype.Text
Range("e65536").End(xlUp).Offset(1, 0).Value = Me.Txtnserie.Text
Range("f65536").End(xlUp).Offset(1, 0).Value = Me.Txtannee.Text
Range("g65536").End(xlUp).Offset(1, 0).Value = Me.Txtpression.Text
Range("h65536").End(xlUp).Offset(1, 0).Value = Me.Txtnbhan.Text
Range("i65536").End(xlUp).Offset(1, 0).Value = Me.Txtnbhcycle.Text
'on décharge le formulaire
Unload Me 'de cette facon à la prochaine saisie les textbox seront vides à l'ouverture
End Sub



Private Sub UserForm_Click()

End Sub

merci d'apporter les modifs nécessaire, avec une petite annotation pour que je puisses comprendre mes erreurs. Encore une fois merci.
Répondre à jc41

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 16 janvier 2007 à 17:44:21 Fil de Discussions
bonjour

j'ai une erreur de compilation qui survient
dans ce cas là tu est positionné sur l'erreur et il faudrait donner la ligne de code.

ce doit être là MachinesVendues = Cells(sel.Row, 1).Value


"MachinesVendues" c'est le nom de ta grille (form)
l'appellation de ta zone c'est quelque chose comme "Me.TxtDpt.Text "


dans "Cells(sel.Row, 1).Value" le 1 désigne la colonne,
mais pour que ton code te permette de déplacer tes colonnes,
il faudrait nommer la colonne des noms, par ex "patro"
et alors tu peux mettre "Cells(sel.Row, range("patro").column).Value"
et si tu insére une colonne avant ta colonne "patro",
ton code continue de fonctionner sans problème.

de même Range("a65536").End(xlUp).Offset(1, 0).Value = clientconverti

devient
Cells(65536, Range("patro").Column).End(xlUp).Offset(1, 0).Value = clientconverti

bon courage et à bientôt.

toujours zen
Répondre à gbinforme

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mercredi 17 janvier 2007 à 22:01:44 Fil de Discussions 
bonjour

Private Sub Worksheet_beforedoubleclick(ByVal sel As Range, cancel As Boolean)
Me.TxtClient.Text = Cells(sel.Row, 1).Value


C'est normal qu'il y ait erreur, car tu n'as pas lancé ton userform,
et Me.TxtClient.Text n'est pas connu.

tu dois mettre avant : grille_modifs.Show

ensuite tu documentes tes zones, et ta macro est terminée.

C'est la validation de la saisie de ta grille qui déclenchera
la mise à jour ou l'abandon et donc tu dois avoir dans ta grille
une zone qui enregistre la ligne à mettre à jour et
cela peut être une zone non affichée (visible à false).

@+

toujours zen
Répondre à gbinforme
Discussions pertinentes trouvées dans le forum
23/02 10h14[Code PHP] Modification données (select)Programmation06/07 00h129
31/05 11h39VBA EXCEL - données multiples listboxProgrammation22/11 13h537
14/02 11h38[PHP] Modification données Base de donnéesProgrammation14/02 11h380
10/08 18h28VBA acces donnée sous form dans formulaireProgrammation10/08 18h280
Plus de discussions sur « [VBA]modifications de données » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide