Automatisation d'une base de données avec excel
#1
Débutant XLPages

Inscription: 11/09/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 12-09-2008 09h15
Bonjour, je suis débutant, pouvez-vous m'aider à réaliser PAS-A-PAS un fichier (surtout la fenêtre de dialogue) exactement comme le modèle ci joint? MERCI d'avane.

Pièce jointe:
zip MODELEdonneesSANScode.zip   [ Taille: 25.69 Ko - Téléchargements: 857 ]
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 12-09-2008 20h56
Bonsoir diversjano, le Forum.

Tout d'abord, je te souhaite la bienvenue.

Ensuite, j'avoue que je ne comprends pas bien ta démarche. Ton Userform est déjà bien avancé et le code semble fonctionnel (je n'ai pas pu tester le Calendar car il n'est pas présent sur ma machine, mais l'ajout de lignes au tableau grâce à ton formulaire se fait très bien).
Que veux-tu faire ou savoir exactement ?

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#3
Débutant XLPages

Inscription: 11/09/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 13-09-2008 00h32
Bonsoir myDearFriend,

Merci beaucoup par l’intérêt que tu portes à mon sujet,

En réalité ce n’est pas moi qui a fait ce fichier, je veux aller plus loin dans mes connaissances avec excel (je suis un vrai débutant), mon objectif est donc d’apprendre comment faire un truc pareille  tout en utilisant celui-là comme modèle d’exercice.

J’aimerai savoir où sont stockés les informations que apparaissent dans la fenêtre « saisie -  Vente de produits telmod », c'est-à-dire où se trouvent les informations que je vois dans les champs: numéro ; Nom Promo ; Désignation ; etc.…

Merci encore.


Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 13-09-2008 01h37
Re,

Ok, en premier lieu et pour répondre à ta question :

Les données pré-affichées à l'ouverture du Userform proviennent de la procédure "effacer()" présente dans le module de code standard (Module1).
En fait, cette procédure est déclenchée lors du clic sur le bouton "Saisir" de la feuille de calcul : voir la procédure évènementielle "CommandButton1_Click()" dans le module de code de la Feuil1. Dans cette procédure évènementielle, on retrouve également le pré-remplissage des ComboBox du Userform.


Cela dit
, je me permets de t'annoncer que tu n'as pas vraiment choisi le meilleur support pour apprendre à utiliser les Userforms. N'en déplaise à l'auteur auprès duquel je m'excuse par avance, mais franchement, dans ce classeur, il y a, à mon avis, des erreurs qu'il convient d'éviter...

Quelques remarques par exemple :

- Déclarer les variables est une bonne chose. Mais la déclaration systématique de variables en type "Public" et/ou en tête de module n'est pas vraiment la meilleure façon d'optimiser un code. Cela entraine un gaspillage des ressources machine (mémoire). On peut utiliser des variables dites "Public", mais il convient de les restreindre au strict nécessaire (quand on ne peut pas faire autrement).
Je te conseille de lire l'article VBA et les variables dans lequel je tente d'expliquer la déclaration des variables et leur utilisation.

- Row est une propriété existante dans VBA. Il s'agit donc d'un mot clé réservé. Nommer une variable avec ce même nom peut entrainer des conflits d'interprétation du code et est donc à proscrire.

- L'utilisation de "TELMOBPROMO.Hide" lorsqu'on clique sur le bouton "Quitter" ne fait que masquer le Userform et ne le décharge pas complètement de la mémoire : encore un gaspillage de ressources.

- Pour initialiser les valeurs dans les contrôles du Userform à son ouverture, on utilise normalement l'évènement "Initialize()" du Userform qui est justement réservé à cet effet. C'est dans cet évènement qu'on devrait remplir les ComboBox par exemple.

- Dans l'expression :
   While ActiveSheet.Cells(Row, 1).Value <> ""
       ActiveSheet.Cells(Row, 1).Select
       Row = Row + 1
    Wend
...la ligne ActiveSheet.Cells(Row, 1).Select ne sert strictement à rien. Par ailleurs, il est toujours déconseillé d'utiliser les Select ou Activate dans VBA. C'est souvent inutile, c'est toujours source de lenteur et ça peut favoriser les plantages dans certaines situations.

Si tu le souhaites, je peux te mettre en pièce jointe un classeur exemple que j'avais réalisé à une certaine époque et qui est, selon moi, sans doute un peu plus académique et plus simple pour ton apprentissage...

Cordialement,




Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#5
Débutant XLPages

Inscription: 11/09/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 13-09-2008 09h57
Merci encore, c'est vraiment très gentil de ta part, j'attends ton classeur exemple.
Cordialement.
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#6
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 13-09-2008 12h04
Bonjour diversjano, le Forum,

Tu trouveras en pièce jointe une façon d'aborder le sujet.
Il s'agit d'un exemple très simple destiné avant tout aux débutants. Il permet notamment de faire connaissance avec la plupart des contrôles ActiveX habituellement utilisés dans ce type de projet.

Tu observeras l'utilisation d'une unique variable "Public". Cette dernière permettant de faire la distinction entre le mode "Nouvel enregistrement" et le mode "Modification" d'un enregistrement existant.

Si tu as besoin d'explications supplémentaires, n'hésite pas.

Cordialement,

Pièce jointe:
zip mDF_EnrgUSF.zip   [ Taille: 15.58 Ko - Téléchargements: 757 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#7
Débutant XLPages

Inscription: 11/09/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 13-09-2008 18h28
Bonjour mDF, je vais utiliser ton classeur dans mon apprentissage, je commence à faire mes premiers pas avec les USERFORMS, c'est passionnant. Par le fait de ne pas avoir assez de connaissances je ne comprends pas les "quelques remarques par exemple:" - ça viendra!
Merci et @ bientôt.
Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#8
Débutant XLPages

Inscription: 11/09/2008

Messages: 7

Système d'exploitation:
PC
Version Excel utilisée:
2003,2007
Posté le : 15-09-2008 00h10
Bonsoir mDF,
S'il te plait peux-tu m'expliquer comment as tu créé ton UserForm?
J'ai déjà appris à placer des contrôles et à les modifier et comment leurs affecter une macro. Seulement je ne trouve pas "Worksheet" dans ma liste de contrôles.
Salutations.

Hors Ligne
Rapport   Haut 

Re: Automatisation d'une base de données avec excel
#9
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 15-09-2008 19h02
Bonsoir diversjano, le Forum,

"Worksheet" n'est pas un contrôle ActiveX à proprement dit, il s'agit d'un composant de ton projet (ton classeur).
Il représente l'objet "Feuille de Calcul" et constitue un élément de la collection Worksheets (avec un S à la fin quand on parle de la collection entière)

Par exemple :
- ActiveWorksheet représente la feuille de calcul active.
- Worksheets(1) est le premier élément de la collection Worksheets du classeur, il représente le premier onglet.
- Worksheets(2) est naturellement le deuxième.
- Etc...

Bien que légèrement différents, on utilisera souvent indifféremment Worksheets(x) ou simplement Sheets(X) pour faire référence à une feuille de calcul particulière.

Si tu observes l'arborescence d'un projet dans l'éditeur VBA (voir l'explorateur de Projets au haut et à gauche que tu peux afficher par Ctrl+R s'il ne l'est pas déjà) tu verras qu'un classeur se décompose en plusieurs "objets" qui sont :

- Les modules de feuilles de calcul (ou Worksheets) : ex: Feuil1, Feuil2 et Feuil3 par défaut généralement
- L'objet "ThisWorkbook" qui représente le classeur lui-même et ne peut être supprimé.
- Les éventuels modules de Userform. Ex : Userform1
- Les éventuels modules de code Standard. Ex : Module1
- Plus rares, mais quelquefois utilisés, il existe aussi les modules de Classe. Ex : Classe1

- Les modules de feuilles sont créés automatiquement à chaque fois que tu insères une feuille dans un classeur.
- L'objet "ThisWorkbook" est unique.
- Tu retrouveras les 3 derniers types de module (Userform, module Standard et module de Classe) dans le menu Insertion de l'éditeur VBE (Visual Basic Editor).

La structure d'un classeur : c'est une notion de base qu'il te faut aborder si tu souhaites comprendre le mécanisme d'une procédure VBA.

Le vocabulaire de base :
- Workbook = le Classeur
- Worksheet = la Feuille de calcul
- Range = la cellule ou la plage de cellules

Cordialement,

PS: j'ai quelques soucis de machine actuellement. Il est possible que je ne puisse répondre rapidement à tes interrogations durant les quelques 5 ou 6 jours prochains... Prend patience et n'hésite pas si tu as besoin d'informations complémentaires... (cela dit, d'autres pourront te répondre également )



Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes