Excel Base de données et VBA

evilfire

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je viens vers vous aujourd'hui afin de quérir votre aide pour un fichier assez difficile à créer (enfin très difficile pour moi). On m'a dit qu'il était impossible de le faire sous excel qui ne serait pas assez poussé pour réaliser ce fichier.

Je cherches à créer un fichier excel (obligatoire on m'impose cet outils et interdiction d'utiliser Access :s)

Je souhaiterais avoir différentes rubriques à savoir :

nom
prenom
lieu
service
poste
date visite
motif visite (plusieurs choix dont autre avec possibilité d'écrire)
prochaine visite (soit obligatoire et là en fonction du post il donnerait la fréquence (exemple tout les 3 mois)) ou alors une date que l"on écrit soit même)
contre indication (jour/nuit ; charge lourdre ; position de travail ; autres)

J'ai déjà modifié un fichier pour avoir une incrémentation automatique à la suite dans un tableau excel (je peux reprendre le fichier)

Mais là j'aurais voulu pouvoir taper par exemple un numéro (qui serait associé à chaque personne) afin que dans le formulaire moi je tape ce nombre et il me redonne toutes les données sur la personne correspondant au numéro. Puis qu'une fois mes modifications faites, je valide et que cela modifie les données existantes et non pas rajoute une ligne.

Je sais que je demande quelque chose de très très poussé, mais sachant que je vais devoir faire cela pour un nombre très important de personne je souhaiterais automatiser pour faciliter le travail par la suite...

Je remercie d'avance toutes les personnes qui apporteront leur aide, et celles qui passeront lire également.

Merci d'avance

J.R.
 

skoobi

XLDnaute Barbatruc
Re : Excel Base de données et VBA

Re bonjour,

dans la macro "Private Sub Cb_ChoixNom_Change()", vérifie la correspondance entre la colonne et la variable "VBdD" pour les optionboutons "Société" et "lieu d'affectation", il y a inversion.
Reprend tranquillement" tout ça et tu trouveras les erreurs.
 

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonsoir Skoobi, Yann, Bruno et le forum ^^

Alors comme tu me l'avais conseillé, j'ai pris le problème à tête reposé et en m'assurant de ne pas être dérangé pendant ce temps :D

J'ai réussi à reprendre les valeurs des optionbutton ^^

Mais il me reste deux cas (deux fois le même) que je n'arrive pas du tout à règler :s.

Celui du traitement des option button où il y a le choix autres et une textbox.

Je viens donc quérir des conseils sur la méthode à adopter car là je ne vois pas comment prendre le problème :s

je vous met ci joint le fichier dans l'état le plus élaboré

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci d'avance à ceux qui m'aideront et au forum pour le fait d'exister ^^
 
C

Compte Supprimé 979

Guest
Re : Excel Base de données et VBA

Bonjour le fil,
Salut Skoobi ;)

Evilfire, pour ton problème, tu peux utiliser ce genre de code
Code:
' Traitement des OptionButton avec choix Autre
    VBdD = .Cells(1 + NumLig, 12)
    FlgOK = False
    For I = 10 To 16
      If Me("OptionButton" & I).Caption = VBdD Then
        Me("OptionButton" & I).Value = True
        FlgOK = True
      End If
    Next I
    ' Si aucune correspondance n'a été trouvée
    If FlgOK = False Then
      ' C'est qu'il s'agit du choix Autre
      Me.OptionButton15.Value = True
      Me.TextBox7.Value = VBdD
    End If

ATTENTION !
Ta boucle n'était pas bonne, tu allais de 10 à 15 alors que tes Ob vont de 10 à 16


Voilà
 

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonjour tout le monde,

Merci Bruno pour ton code, il marche à merveille. La comparaison entre la réponse figurant dans la BdD et les optionbutton pour déduire que si il n'y en a pas c'est que c'est le contenu de la Textbox très bonne idée ;)
Je pensais bien qu'il fallait faire quelque chose comme ça mais je ne suis pas parvenu à trouver comment faire :s

Je regarderais par la suite pour changer deux trois petits éléments par ci par là (rajouter une possibilité de supprimer une personne de la BdD, de faire que si on écrit dans les text box autres, l'option button autre soit sélectionner ou alors que la textbox ne soit accessible qu'une fois autre selectionné.)

Je vais être moins stressé sachant que ce sont des "bonus" maintenant ^^

Merci encore à tous, je part sur mon mémoire pour le reste de la journée et je reviens sur le fichier ce soir ^^
 
Dernière édition:

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonjour à tous,

J'ai affecter quelques modifications au fichier (je vous rassure rien de très compliqué)

Choix de la combobox2 variant selon le choix dans la combobox1 et rajout d'un bouton pour supprimer une personne dans la BdD.

J'ai eu plusieurs demande de la part de mon supérieur.

A savoir qu'il s'avère qu'il faut distinguer visite périodique des autres (ça je l'ai fait c'est pas dur) mais je cherche à savoir si il est possible de faire :

- choix d'une périodicité parmis des optionbutton
- définition d'une date (dans la TextBox12)

Que selon la périodicité (1, 3, 6, 12 ou 24 mois) il affiche dans une textbox la date de la prochaine visite périodique en faisant le calcul :

Date donné + périodicité en mois = date affichée

J'ai vu la fonction : DateAdd ( "m", 1, Madate)
Avec Madate = TextBox12

Mais cela ne marche pas quelqu'un peux m'aider ?

Merci d'avance
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Excel Base de données et VBA

Salut Evilfire,

Si tu veux que l'on puisse t'aider, c'est comme d'hab. il faut nous mettre la dernière version du fichier.

Avec éventuellement un exemple de ce que tu veux dedans sur une feuille à part

A+
 

ChTi160

XLDnaute Barbatruc
Re : Excel Base de données et VBA

Salut evilfire
bonjour le Fil
Bonjour le Forum
arff juste histoire de saluer le Post (très beau travail)
Pourquoi ne pas mettre dans la procédure
Private Sub Cb_ChoixNom_Change()

NumLig = Me.Cb_ChoixNom.ListIndex + 2 plutôt que +1
cela permet de remplacer l'ensemble des 1 + NumLgn par NumLgn
exemple
With Sheets("BdD")
VBdD = .Cells(NumLig, 3)
Bonne fin de Journée
 
C

Compte Supprimé 979

Guest
Re : Excel Base de données et VBA

Salut ChTi160
cela permet de remplacer l'ensemble des 1 + NumLgn par NumLgn
C'était juste pour la compréhension ;)

Salut Evilfire,
tu as bien bossé sur ton fichier ;)

tu trouveras ci-joint ton fichier modifié, avec quelques améliorations
1) suppression de tes contrôles "Calendar" dans tes USF
et remplacement par un USF "Calendrier0"

2) Code sur tes OptionButton de délai de visite périodique
pour calculer la prochaine échéance

3) Création d'une feuille "Params" qui contient tous les postes ainsi ques les emplois occupés dans ses postes
Mieux vaut mettre ça sous forme de liste dans une feuille qu'en dur dans le code (plus simple à modifier par la suite)
J'ai donc modifié le code pour ajouter les éléments à on Combobox1 et 2

4) Création d'un Module1 qui contient quelques fonctions qui sont utiles ou peuvent l'être ;)

Voili, voilà ... :D

A+
 

Pièces jointes

  • Evilfire_Visite Medicale V2.3.zip
    75.7 KB · Affichages: 194
Dernière modification par un modérateur:

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonsoir Bruno, ChTi160, le forum,

@ Bruno :

Merci infiniment pour tes modifications. Je reconnais que le fait de mettre dans le code pur m'a pris du temps surtout quand après on te demande de le remodifier ^^'

Là par le biais de copier coller ça peut se faire très rapidement.
Pour le calcul des dates je vais regarder de suite comment tu t'y es pris car j'ai vraiment eu du mal avec et je n'ai guère réussi. Bravo à toi

Les calendriers étaient surtout génant quand je modifier toujours bien les replacer etc et 3 codes pour 3 calendriers je me doutais qu'il y avait plus performant mais mes limites se sont révélées :(

Là j'avoue que le résultat du code est plus intéressant.

Je vais pouvoir regarder comment tu as fait et rechercher pour voir si il est possible de faire un historique / archivage des 5 dernières visites effectués.

Et comme plus on veut faire bien plus les demandeurs placent des demandes supplémentaires j'ai même un nouvel élément auquel je dois tenter de répondre mais celui là passera après les autres ^^. Ce sera le final je pense.

En attendant je part à la découverte de tes modifications et demain je recherche une réponse pour l'archivage j'ai trouvé 2-3 éléments sur internet où ils font un archivage je dois me pencher sur la question.

Merci infiniment.

Cordialement

Evilfire
 

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonjour à tous,

J'ai donc cherché à mettre en place mon système d'historique. Et je coince sur le moment où il doit comparer la valeur de la textbox12 (je cherche en premier à faire pour la périodicité) et voir si elle est la même que la dernière valeur de la ligne.

Mais je ne trouve pas quelle syntaxe je dois appliquer pour réussir.

Le résultat attendu étant :

1) lorsqu'il détecte un changement de date il l'insère dans la colonne suivante de la personne exemple :

Marley Bob date1

Il insére pour avoir :

Marley Bob date1 date 2

Cependant je ne trouve pas la syntaxe me permettant de me placer dans la colonne vide suivante.

Je souhaiterais ensuite afficher les 5 dernière valeurs (date X-4, date X-3, date X-2, date X-1, date X) [X étant la date la plus à droite] dans les textbox de la partie "Historique" sur la seconde page.

Si quelqu'un à une idée vers laquelle m'aiguiller je le remercie d'avance ;)

Evilfire

fichier avec tentative historique
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Excel Base de données et VBA

Bonjour evilfire,

pour trouver la dernière colonne vide et remonter dans l'historique des dates, je te conseille de partir de la dernière colonne "IV" (excel 2003) puis d'utiliser "xlToLeft" au lieu de "xlToRight".
Ensuite tu remonte les colonnes avec Offset(0,-1), Offset (0,-2) etc... pour trouver date x-1 date x-2 etc...
Je te laisse traduire en code VBA ;).
 

evilfire

XLDnaute Nouveau
Re : Excel Base de données et VBA

Bonjour Skoobi,

J'ai déjà tenté de faire avec les Xltoleft mais pas moyen de trouver mon erreur j'ai déjà tenter :

With Sheets("Histoperiodique")
' Numéro de la ligne = 1 (entête tableau) + numéro de la ligne choisie + 1 (car combobox commence à 0)
NumLig = 1 + Me.Cb_ChoixNom.ListIndex + 1
If TextBox12.Value <> .Range(NumLig).End(xlToLeft).Address Then
Range(NumLig).End(xlToLeft).Offset(0, 1) = TextBox12.Value
End If
End With

Mais il me met en jaune la ligne du If et me dit :

Erreur d'exécution 1004
Erreur définie par l'application ou par l'objet

Pourtant c'est la syntaxe que je trouve partout :s


Je parcours tout les site que je trouve il donne toujours cette syntaxe et pas moyen de la faire marché.

Merci du conseil au moins je vois que je suis dans la bonne voie même si j'en loupe le tournant ^^

Avant j'avais fait si valeur différente de celle dans la colonne C alors insérer une colonne et coller le contenue. Mais l'inconvénient est que pour ceux qui ont des visites espacé (1 tous les 2 ans) on aurait vite perdu l'historique.

Afin de pouvoir voir le problème directement je vous met ici la dernière version que j'ai là. J'ai mis à jour des changements de couleur pour certaines dates et intégrer l'actualisation des dates "prochaine visite périodique" lors du changement de l'ancienne date.

Cordialement

Evilfire

http://cjoint.com/?ffpskXKKst
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 382
Membres
102 877
dernier inscrit
robinet