MAJ base de données sur excel

MAJ base de données sur excel - VB/VBA/VBS - Programmation

Marsh Posté le 01-05-2007 à 21:14:55    

Bonjour,
 
J'ai une boite de dialogue sur laquelle on renseigne son nom, prénom, n° et date début et de fin. (genre "fiche personnel" )
 
Les informations remplies bascluent dans un onglet excel. (fiche individuelle)
 
Puis j'aimerais que ces informations viennent actualiser une base de données avec les noms, prénoms, n° d'autres personnes.
Il s'agit uniquement de mettre à jour des données pour une personne deja existante.
 
Ok pour la boite de dialogue
Ok pour la bascule des infos
Mais... comment mettre à jour les champs pour une seule personne sans que les autres soient modifiés?
 
Merci

Reply

Marsh Posté le 01-05-2007 à 21:14:55   

Reply

Marsh Posté le 01-05-2007 à 22:05:44    

quels sont les champs différenciateurs de ta BDD Excel ?

Reply

Marsh Posté le 01-05-2007 à 22:40:20    

Les différents champs à remplacer :  
- nom
- prénom
- n°
- date de début
- date de fin
 
Chaque employé possède sa fiche.
Chaque mise à jour par le biais de la boite de dialogue est individuelle.

Reply

Marsh Posté le 02-05-2007 à 01:45:52    

Alors,
 
je ne comprends pas pourquoi, les infos saisies par chaque personne n'actualisent pas directement la BDD finale.
En effet, la saisie des infos pourrait en même temps être ajoutée dans un onglet Excel ET actualiser ta base en même temps... exactement de la même manière...
La base de données finale est également du Excel ?
 
Ou alors (dis moi si je me trompe) dans le premier cas (la bascule) les infos sont simplement ajoutées sans être modifiées si une personne déjà existante change ses infos ?
 
Dans ce cas pour modifier les infos dans la base de données finale (si c'est du excel), tu fais une recherche sur ta feuille sur les noms et prenoms.
 
On imagine que dans ta boite de dialogue, TxtBx1 est le nom et TxtBx2 le prénom et que dans ta feuille excel, les noms sont inscrits dans la colonne 1 et les prénoms en colonne 2 : donc tu parcours ton fichier Excel et tu dis :  
dim A as long
for A=1 to 65536
  if cells(A,1)=TxtBx1 and cells(A,2)=TxtBx2 then
  ...
  exit for
next A
 
Dis moi si je suis à coté de la plaque.
 
Je voudrais profiter de cette occasion pour adresser une speciale dédicace à jpcheck qui passe un temps infini à trouver des réponses à (presque) toutes les personnes qui rencontrent des problèmes sur ce site.
Ca méritait d'être noté et salué.
 

Reply

Marsh Posté le 02-05-2007 à 20:32:02    

En effet, tout se passe sur Excel.
Les infos saisies peuvent tout de suite actualiser la BDD, mais je ne sais pas comment le faire...  
 
Il n'est pas obligatoire de passer par une étape intermédiaire, je ne savais pas comment faire autrement.
 
Les infos de la boite de dialogue viennent remplacer (actualiser) les infos de la BDD.
 
Il faudrait donc que je fasse une recherche puis seulement après je pourrais insérer les infos?
 
AprilThe5th

Reply

Marsh Posté le 02-05-2007 à 21:25:05    

ouais c'est une solution
 
sinon ta solution pour les calendrier m'interesse toujours.

Reply

Marsh Posté le 02-05-2007 à 21:40:26    

et pourquoi ne pas utiliser Données\Formulaires

Reply

Marsh Posté le 03-05-2007 à 01:13:47    

Comme je te l'ai dit, il faut faire une recherche par nom et prémon sur ta feuille Excel.
Dis-moi dans quelles colonnes se situent ces 2 informations et je t'envoie le code pret à l'emploi.
Essaie de me donner le PLUS d'infos possible afin que mon aide soit réellement efficace.

Reply

Marsh Posté le 03-05-2007 à 06:55:03    

colonne A : matricule
colonne B : nom
colonne C : prénom
colonne D: date de début
colonne E : date de fin
 
Je voulais insérer une zone de texte modifiable pour le n°, nom et prénom. Puis sur excel, dans la zone de visualisation des résultats, j'ai une formule recherchev
 
Merci pour ton aide AprilThe 5th!!
 
PS pour ingenieurcesi : je n'ai pas encore trouvé le code pour faire fonctionner mon calendrier

Reply

Marsh Posté le 03-05-2007 à 12:10:29    

Bonjour à tous
Bonjour titine
 
N’ayant que très peu de renseignements sur la macro, je te propose ce code pour la recherche de la ligne du n° de matricule en colonne « A ». Si celui-ci peut être modifié, il faut récupérer dans une autre colonne
La fonction « find » renvoie la ligne où est trouvé le n°
 

Code :
  1. num_mat = textbox1.text
  2. With Worksheets("bdd" ).Range("a1:a65536" )
  3.     Set Var = .Find(num_mat, LookIn:=xlValues)
  4.     If Var Is Nothing Then
  5.     maligne = "0"   'pas de bdd de commencée, feuille vierge
  6.     Else
  7.     maligne = Var.Row
  8.     End If
  9. End With


 
après tu envoies avec :
range("a" & maligne)=textbox1.text
range("b" & maligne)
.......
 
Si j'ai bien compris !!!
 
Eric

Reply

Marsh Posté le 03-05-2007 à 12:10:29   

Reply

Marsh Posté le 03-05-2007 à 13:29:42    

si ca t'interesse
 
http://cjoint.com/?fdnB0PFCDA
 
mais à adapter (nom des feuilles et des paramètres)
 
bonne journée

Reply

Marsh Posté le 03-05-2007 à 20:05:47    

Pour vous aider :  
http://cjoint.com/?fducIynttw
 
1. Cliquez sur MAJ
2. Remplir les champs de la boite de dialogue
3. Je voudrais que les infos saisies mettent à jour automatiquement la base de données, en remplacant les données précédentes.
 
Attention, le document n'est pas du tout au point.
Je vous remercie vraiment pour votre aide!

Reply

Marsh Posté le 03-05-2007 à 21:04:57    

Bonsoir à tous
Bonsoir Titine
 
Je n'ai pas "calandar" mais essaie ceci
 

Code :
  1. Private Sub CommandButton1_Click()
  2. num_mat = ComboBox2.Text
  3. With Worksheets("Fiche synthétique" ).Range("a1:a65536" )
  4.    Set Var = .Find(num_mat, LookIn:=xlValues)
  5.    If Var Is Nothing Then
  6.    maligne = "0"   'pas de bdd de commencée, feuille vierge
  7.    Else
  8.    maligne = Var.Row
  9.    End If
  10. End With
  11. Range("D" & maligne) = calandar1.Text
  12. Range("e" & maligne) = calandar2.Text
  13. Unload Me
  14. End Sub


 
Eric

Reply

Marsh Posté le 04-05-2007 à 07:42:46    

Bonjour,
Dans la proposition d'eric455, remplace les lignes 11 et 12 par:
Range("D" & maligne) = Calendar1.Value
Range("e" & maligne) = Calendar2.Value
Cordialement
 
edit:
 
La recherche d'unicité sur le matricule est meilleure que celle sur nom&prénom , le matricule étant, ici, l'identifiant de l'individu.
 
Le contrôle "calendrier" s'obtient en cochant dans la liste des contrôles supplémentaires(clic droite sur la boîte à outils)  la case : contrôle calendrier...


Message édité par seniorpapou le 04-05-2007 à 08:02:32
Reply

Marsh Posté le 04-05-2007 à 18:17:44    

Bonsoir à tous
 
Merci seniorpapou pour le renseignement sur le calandar, je devais être fatigué
 
Eric

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed