EXCEL VBA code et REQUETE

wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -  
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis totalement debutant au niveau de VBA.
Pour être plus concret je ais expliquer en détails.
Voila je suis dans une entreprise de transport.
Je souhaite créer un fichier partenaire sous excel. Ce fichier se remplit au fur et à mesure. Pour cà, j'ai créer un "formulaire" (excusez moi ce n'est peut être pas le bon terme). Quand on rentrer un nouveau partenaire, on remplit ce formulaire ensuite OK et toutes les infos vont se mettre dans la feuille "partenaire" dans la bonne colonne.
Jusqu'ici tout va bien!

lá où ca se corse, c'est quand je dois renseigner les départements que le partenaire peut livrer. J'ai essayer boutons dóptions en vain et je tente avec les cases à cocher mais je nárrive pas à trouver le code.

La feuille "partenaire" se presente ainsi

Nom ! Tel ! Contact ! VILLE !...! Ensuite une colonne pour chaque département

Ex: Nouveau partenaire qui peut livre dans le 24 et 47:
Je remplis le formulaire et coche ou selectionne le 24 et 47 pour que "OUI" s'affiche dans les colonnes de ces deux departements

Je n'arrive pas à coder celà.


Ensuite comment consulter le fichier?
Serait il plus simple de faire un filtre sur la feuille "partenaire" ou puis je faire une requête qui me permait d'afficher les partenaires cappables de livrer tel ou/et tel département?

Merci d'avance,

Cordialement


A voir également:

11 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
Pour vous aider, il nous faut voir votre fichier...
Pour cela, faites en une copie AU FORMAT 97-2003 .xls, sans données confidentielles et transmettez nous un lien, vers votre fichier, créé grâce à https://www.cjoint.com/ ou http://www.cijoint.fr/
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,
je suis encore dans la premiere partie de la construction de mon fichier.
Je réussis à remplir ma base de donnée nikel.
Le hic que je rencontre, cést quqnd je coche la check box All france ( je voudrais que oui sáffiche dans chaque colone de departement
regarde le fichier ca sera surement plus clair


http://www.cijoint.fr/cjlink.php?file=cj201106/cijX6XTnUQ.xls

Merci d'avance
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Hébé, y'a du boulot !!!

déjà avec all france tu peux simplifier pour tout mettre à "oui" ou "non"

 With Sheets("File Partner")
     '... code avant
     If CBallfr Then
          Etat = "OUI"
     Else
          Etat = "NON"
     End If
     .Range(Cells(ligne, 11), Cells(ligne, 107)) = Etat
     
     '..... suite du code
End With


le fait de mette with sSheets("File Partner").... End with t'évite de répéter Sheets("File Partner") à chaque ligne

si c'est pas all france, on marque "non" ce qui évitera de tout parcourir....

quant aux département, il faudrait passer par un module de classe puisque les actions sont similaires avec l'événement "change" de checkbox; quelqu'un du forum te fera ça (moi pas avant demain...)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut michel, wallyfm,
Je n'ai pas pu ouvrir le fichier joint... Je vous laisse donc dans les mains expertes de michel.
Bonne journée à vous 2.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Salut Pijaku

le fichier (ça mouline en ce moment sur cjoint et cojoint)
https://www.cjoint.com/?0FDkB7arT7g

J' attend la réaction de wallyfm pour oeuvrer...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Ok. J'ai bien reçu le fichier. J'y regarde en attendant la suite...
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour à vous deux et merci de votre aide,

Débordé je réponds que maintenant, désolé.

Michel,
Avant que tu ne me répondes, j'avais trouvé un truc:

If CBallfr = true then

Sheets("File Partner").Cells(ligne, 11).Value = "OUI"
Cbdel01 = True
Cbdel02 = True
Cbdel03 = True
Cbdel04 = True
Cbdel05 = True
Cbdel06 = True
...
...
.....................Jusqu'a la derniere checkbox departement

Else
Sheets("File Partner").Cells(ligne, 11).Value = "NON"

end if


'je dis donc que si la checkbox ALLFRANCE, cela veut dire que la Checkbox pour chaque département est coché.
Ensuite, jái le code pour chaque département:

If cbdel01 = true then
Sheets("File Partner").Cells(ligne, 12).Value = "OUI"
else
Sheets("File Partner").Cells(ligne, 12).Value = "NON"
End If
...................

J'avoue que c'était fastidieux à écrire mais Ca marche...

Savez vous comment je peux organiser mon userform?
Quand je l'ouvre et que je le remplit, je voudrai lorsque je fais tabulation, positionner le curseur sur le TextBox du dessous et pas celui placer à Tataouine.

J'ai d'autres questions par la suite, notamment sur la création d'une requête, si je peux appeler ca comme ca.
Je veux pouvoir consulter la base de doonnées suivants certains critères.

Exemple: je veux voir apparaitre tous les partenaires pouvant livrer dans le département 29.

Je vous avoue que je pourrai agir avec un filtre sur la base mais je veux l'outil rapide d'utilisation.

Merci d'avance pour vos commentaires.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bien sûr, faut faire ça pendant le WE!
ben voyons!
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Profite de ton Week end!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut tout le monde,
Bon, on va commencer par expliquer juste un petit détail qui peux s'avérer "irriitant". Lors d'une demande dans un forum, il est demandé au demandeur de respecter un certain formalisme dans ces questions. Même si je suis persuadé (on attendra sa confirmation) que wallyfm02 n'était pas directif dans sa demande, le fait de voir des "je veux" est limite... Il vaux toujours mieux utiliser des "je souhaiterais", ou des "je voudrais", moins offensant pour les helpers...
Si je reprends ta prose wallyfm, tu conviendra avec nous que ça en fait tout de même pas mal :
Je veux pouvoir consulter la base de doonnées suivants certains critères.
Exemple: je veux voir apparaitre tous les partenaires pouvant livrer dans le département 29.
Je vous avoue que je pourrai agir avec un filtre sur la base mais je veux l'outil rapide d'utilisation.

Bon et bien sur, il n'est pas pour nous ici question de faire le fichier à ta place, et encore moins le week end, mais bien entendu de t'aiguiller vers les bonnes solutions.

En gage de bonne foi, je t'en apporte déjà une :
If CBallfr = true then 
Sheets("File Partner").Cells(ligne, 11).Value = "OUI" 
Cbdel01 = True 
Cbdel02 = True 
Cbdel03 = True 
Cbdel04 = True 
Cbdel05 = True 
Cbdel06 = True ...........

et fastidieux et inutile... Une boucle t'apportant ton résultat en 5 lignes :
Private Sub CBallfr_Click()
Dim Ctrl As Control
Sheets("File Partner").Cells(ligne, 11).Value = "OUI"
For Each Ctrl In Me.Controls
    If TypeOf Ctrl Is MSForms.CheckBox Then Ctrl.Value = True
Next Ctrl
End Sub
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour à toi,

Je suis tout à fait d'accord avec toi. Il n'est pas du tout question que vous fassiez le fichier à ma place, je recherche simplement vos savantes lumières.


Concernant, l'utilisation du "je veux", je ne partage pas du tout ton point de vue.

Quand "je veux"
pouvoir consulter la base de données suivants certains critères:

Suis-je directif, offensant envers les "helpers"?

Et quand "je veux"
l'outil rapide d'utilisation.

Suis-je directif, offensant envers les "helpers"?

Ok, j'aurai pu éviter les répétitions. Désolé, j'ai pas fait L.

Toutes ces phrases sorties de leur contexte, font partie de l'exposition de mon besoin.

Je veux cela comme-ci, comme-ca parce que ca ou ca.
Comment pourrai-je y arriver?

Voilà l'explication de "ma prose"
Désolé je ne maîtrise pas non plus les alexandrins.



Merci tout de même pour l'aiguillage
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
'tain c'est grave quand même que tu ne veuilles pas reconnaitre que c'était lourd ta demande... je souhaiterais ceci est tout de même mieux, pour tout le monde non? Sans maîtriser les alexandrins...
Bon revenons en à nos moutons, on est en "bureautique", pas en "prise de tête" et je sens que cette conversation inutile va tourner en rond.
Si tu veux que l'on continue, dis le.
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Je n'ai pas le temps de me prendre la tête.
Je ne prends personne pour un pigeon ( dixit Michel)

Continuer quoi?
Si tu souhaites continuer à m'aider, pas de problème pour moi bien sûr.
Mais sinon stop.
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour à tous.

Je comprends la réaction de Michel et Pijaku, mais au delà de la polémique et pour essayer d'apporter de l'eau au moulin, je crois que le problème est mal posé.

Si l'on veut se servir d'Excel comme d'une base de données, il faut organiser les données comme dans une base. Ça ressemble à une Lapalissade, mais c'est pourtant le B A BA. On ne mélange pas les torchons et les serviettes.

Tel que le fichier est organisé, ça va vite devenir une usine à gaz pour effectuer une recherche, une mise à jour ou tout autre opération. Sans parler de la maintenance.

De plus, il faut se poser la bonne question : Est-ce un transporteur qui livre plusieurs départements ou bien un département est desservi par plusieurs transporteurs ?

Un autre conseil. Si on veut se servir d'un classeur Excel comme d'une base de données, on évite de mettre les IHM (Interfaces Homme Machine) dans le fichier qui sert de base. Excel n'est pas Access et offre beaucoup moins de souplesse.

Bon courage.

;o)
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Polux31,

pour te répondre, un transporteur peut livrer dans 1 ou n départements et un département peut être livré par 0 ou n transporteurs.

Quand tu dis:
"Si l'on veut se servir d'Excel comme d'une base de données, il faut organiser les données comme dans une base. Ça ressemble à une Lapalissade, mais c'est pourtant le B A BA. On ne mélange pas les torchons et les serviettes."

Que me conseilles tu? Je ne saisis pas. les torchons et les serviettes sont mélangés?

A propos des IHM. tu ma conseilles d'envoyer les infos dans un fichier externe?

Merci.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
C'est merveilleux, internet remarche miraculeusement chez Wally...
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Les torchons = les infos du transporteur, les serviettes = les départements.

pour te répondre, un transporteur peut livrer dans 1 ou n départements et un département peut être livré par 0 ou n transporteurs.

Pourquoi ne le mets-tu pas en pratique alors ?

Une table Transporteurs, une table Département et une table relationnelle Département_Transporteurs.

A propos des IHM. tu ma conseilles d'envoyer les infos dans un fichier externe?

Oui c'est bien ce que j'ai dit.

Tu peux trouver plein d'exemples de liaison entre les fichiers sur un moteur de recherche. Je te conseille de regarder ici : Lire ou écrire dans un classeur fermé.

0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci à toi
0
wallyfm02 Messages postés 55 Date d'inscription   Statut Membre Dernière intervention   1
 
Mais Michel, il n'a jamais cessé de fonctionner. je n'y avais simplement pas accès au boulot. Chez moi, je n'ai pas le net, je te le répète.

Je travaille sur mon fichier.
Donc je suis internet.

cdt
0