Modifier un enregistrement dans une base de données

Toscamyl

XLDnaute Nouveau
Bonjour à tous,

Nouvelle inscrite sur ce forum, j'espère être au bon endroit pour exposer mon problème...

Voilà j'ai créé sous Excel une base de données qui est alimentée par un formulaire.
Ce formulaire je l'ai créé à "la main" et pas par les f"onctionnalités d'excel" (c'est à dire données/assistant modèle ect...).

j'ai créé une macro qui me permet d'enregistrer ce que j'ai saisie dans le formulaire, dans ma base de données.

Maintenant je voudrais créer une macro me permettant de modifier un enregistrement dans ma base de donnée.

J'avoue que mes connaissances en VBA sont un peu limitées ..
je joins un fichier exemple pour cela soit plus clair..
Si quelqu'un avait une idée de la façon dont je dois m'y prendre ..
Je vous remercie par avance pour vos réponses

Toscamyl
 

Pièces jointes

  • Copie de Fiche habilitation ING (2).zip
    27.9 KB · Affichages: 246
  • Copie de Fiche habilitation ING (2).zip
    27.9 KB · Affichages: 251
  • Copie de Fiche habilitation ING (2).zip
    27.9 KB · Affichages: 268

ChTi160

XLDnaute Barbatruc
Re : Modifier un enregistrement dans une base de données

Re

une nouvelle version ou j'ai corrigé un bug

et ou j'ai ajouté la création d'un nouvelle enregistrement si la recherche dans le Textbox de Recherche n'aboutie pas
puis possibilité en mettant * dans le Textbox de Recherche d'afficher l'ensemble des lignes

Le Fichier : http://cjoint.com/?bwqnngImq3

Bonne fin de journée
 

Toscamyl

XLDnaute Nouveau
Re : Modifier un enregistrement dans une base de données

Bonjour,

merci pour ton aide..
En fait j'ai besoin d'une macro qui me permet via une nouvelle feuille excel de modifier un enregistrement.
Pour bien faire il faudrait que je puisse saisir le nom de l'agent et que les informations qui concerne l'agent soit rapatrié dans la feuille. J'effectue les modifications nécessaires et j'enregistre les modifications via une macro "modifier la fiche".
Et j'aurai besoin que la macro aille modifier l'enregistrement déjà existant dans la base et pas qu'elle créait un nouvel enregistrement.

On m'a proposé une solution avec un useform mais ca ne convient pas vraiment...

As tu une idée ?

Merci
 
G

Guest

Guest
Re : Modifier un enregistrement dans une base de données

Bonjour Toscamyl,

Dans ce que je t'ai donné hier, tu peux faire la consultation, modification ou création dans une seule feuille. Mais tu as tous les élement de code pour essayer d'adapter selon ton besoin et de revenir si tu rencontre un problème précis, dans le développement.

A+
 

Toscamyl

XLDnaute Nouveau
Re : Modifier un enregistrement dans une base de données

Rebonjour Hasco,

Effectivement j'ai vu que tu m'avais fait des macros a adapté.

J'ai repris la macro "enregistrer" que tu as améliorer par compte je rencontre un problème d'exécution "13" incompatibilité de type".

'Choisir la ligne dans laquelle enregistrer les données
1 If Ligne_Edition = 0 Then Ligne_Edition = [Base_Nb_Ligne] + 2
Ca bloque a ce niveau apparement

et comme mes connaissances en macro sont quasi nul:confused:

Merci encore pour ton aide
 
G

Guest

Guest
Re : Modifier un enregistrement dans une base de données

Toscamyl,

si tu as repris les macros fournies, il faut que tu donnes le travail que tu as fait car je ne peux pas deviné, quelle modification a entrainé le prblème.

Normalement Ligne_Edition doit être déclaré en type Long.

A+
 

Toscamyl

XLDnaute Nouveau
Re : Modifier un enregistrement dans une base de données

Je suis en train de d'essayer de comprendre le fonctionnement de ton fichier
Quand je clique sur le bouton "enregistrer" il y a un message d'erreur

j'ai surligné le bug en rouge

...pas facile quand on est pas doué comme moi:eek:

Voilà ton code :

Option Explicit

Private Sub btnNouvelleFiche_Click()
On Error Resume Next
Set ctl = Me.OLEObjects("ListeNomsPrenoms")
On Error GoTo 0
ctl.Object.ListIndex = 0
RemplirFiche "xxx" 'Nouvelle fiche
End Sub

Private Sub cmdRetourMenu_Click()
Call Menu
End Sub

Private Sub ListeNomsPrenoms_Click()
'listindex=-1 : pas de selection
'listindex= 0 : selection du Premier item (contenant MATRICULE et AGENT)
If ListeNomsPrenoms.ListIndex < 1 Then Exit Sub
RemplirFiche ListeNomsPrenoms.Value
End Sub

Private Sub Worksheet_Activate()
'Remplir la liste avec les noms et prénoms de la base
'Dans l'ordre de la base de données
Dim ctl As OLEObject
Dim i As Integer
On Error Resume Next
Set ctl = Me.OLEObjects("ListeNomsPrenoms")
On Error GoTo 0

If Not ctl Is Nothing Then
With [Base_datas]
ctl.Object.Clear
ctl.Object.AddItem "MATRICULE"
ctl.Object.List(0, 1) = "AGENT"
For i = 1 To [Base_Nb_Lignes]
ctl.Object.AddItem .Cells(i, 3)
ctl.Object.List(ctl.Object.ListCount - 1, 1) = .Cells(i, 1) & " " & .Cells(i, 2)
Next i
End With
End If
End Sub
 
G

Guest

Guest
Re : Modifier un enregistrement dans une base de données

Re, Toscamyl,

Il manque une ligne (ci-dessous en rouge)
J'ai déplacé la ligne en vert
Code:
Private Sub btnNouvelleFiche_Click()
    [COLOR=red]Dim ctl As OLEObject[/COLOR]
    On Error Resume Next
    Set ctl = Me.OLEObjects("ListeNomsPrenoms")
    ctl.Object.ListIndex = 0
    [COLOR=yellowgreen][B]On Error GoTo 0[/B][/COLOR]
    RemplirFiche "xxx" 'Nouvelle fiche
End Sub

En entête de module tu as une ligne: Option Explicit

Cette ligne oblige à la déclaration de toutes les variables (C'est préférable pour le debugage, la mise au point et la performance)

Comme ctl n'était pas déclaré dans la procédure, cela a levé l'erreur. Ce qui est bizard c'est que la ligne "On error Resume Next" aurait du empêcher le programme de se bloquer.

Lorsque tu demandes une correction, donne le texte d'erreur retourné ainsi que les modifications éventuelles que tu aurais apporté au code. Car le reste du code, pour le moment je l'ai.

A+
 

toto3371

XLDnaute Nouveau
Re : Modifier un enregistrement dans une base de données

Bonjour,
Je pense que mon problème est proche du votre enfin si j'ai bien tout compris.

Je m'occupe d'une association et je veux simplifier la saisie des données administratives concernant chaque membre sur excel.

Pour cela j'ai créé différentes colonnes sous excel (Nom, Prénom, Date de naissance, téléphone, adresse, ...)

Afin de les remplir facilement, j'ai créé un formulaire avec VBA. Mon formulaire marche parfaitement.

Seulement je voudrais pouvoir faire l'inverse, c'est à dire que si je veux modifier une données concernant un membre il me faudrait que mon formulaire se réaffiche mais avec les données remplie pour ce membre et ainsi je n'ai plus qu'à modifier les données erronées.

Je ne sais pas si je suis clair.

Merci d'avance en tout cas de votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 966
Membres
103 069
dernier inscrit
jujulop