Excel : Divers Problemes ; Déselection, liste, graphique...

kennybis Messages postés 4 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 20 avril 2006 - 27 mars 2006 à 08:45
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 28 mars 2006 à 10:47
Bonjour !

Je commence un stage ou je pensais tout faire sauf du VBA, et comme par hasard, j'dois en faire. J'ai réussi a peu pres tout ce que je voulais, mise a part 4 choses :

1/ Faire des listes dynamiques : Je dois faire des listes avec Données\Validation et j'aimerai que ces listes changent selon une tierce case (un peu comme si on avait une requete sql avec un "where" variable).

Le soucis étant que je ne sais pas quel évènement intercepter, car cette liste est graphiquement une combobox mais n'est pas considérée comme un objet a part entière. Je ne sais donc pas non plus comment la peupler, ni comment construire la formule qui me permettrait de le faire.

2/ Juste savoir la méthode a utiliser pour déselectionner une case (ca doit surement être super simple mais vu que j'ai jms fait... (j'ai deja mis 5mn a trouver .Hide ...))

3/ Comment faire un graphique entièrement par le code, car je le voudrais modifiable a la volée.

4/ J'ai vu un document Excel comportant des cellules qui n'étaient pas affectées par les scrolls. Ca s'utilise pour les cellules de titre de colonnes etc... Je sais pas du tout comment ca s'appelle mais j'aimerai beaucoup savoir comment les faire...

Merci pour tout !

3 réponses

conseildg Messages postés 86 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 mars 2007
27 mars 2006 à 10:03
A mon avis, il faut préciser un peu plus les questions pour avoir des réponses.
Pour le graphique, par exemple il faut préciser le contexte?une première méthode consiste à mettre l'enregistrement de macro et tracer le graphique, puis ensuite analyser le code pour le modifier et le réutiliser.
0
kennybis Messages postés 4 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 20 avril 2006
27 mars 2006 à 12:07
A votre demande, je vais tenter de ré-expliquer mes 4 points afin de cibler un peu plus mes réponses.

1/ Je vais donner un exemple concret. Je travaille pour un importateur de produit frais, et ils ont besoin de faire un listing avec des listes de choix. Il y a une case réservée au type de produit "fruit" ou "légume", et une seconde qui doit comporter la liste, soit des fruits, soit des légumes...

2/ je peux pas etre plus précis je pense, juste comment faire pour déselectionner. J'ai vu la méthode pour selectionner une autre case, mais pas pour n'en selectionner aucune (apres reflexion, est ce que c'est possible...)

3/ N'ayant jamais fait de VBA auparavant, je n'ai aucunes idées sur les méthodes a employer pour générer un graphique par le code. Je sais simplement qu'il faut que je fixe 2 dates, et qu'a l'appui d'un bouton, ca régénère un graphique avec l'intervalle de temps sélectionnée.

4/ Pour ca, je ne sais pas trop comment expliquer non plus =(

Merci !
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
28 mars 2006 à 10:47
1/Je pense qu'il y a moyen de ne faire ça qu'en Excel, mais j'ai un peu de mal ce matin, alors tant pis, je vais t'y ajouter un tout petit bout de code.
Si j'ai bien compris ta question, tu sais déjà faire ta ComboBox avec une liste (Données\Validation - Liste)

On va juste partir de ça :
Sur une feuille de paramètrage, tu vas donc lister tous tes produits.
Par ex, Colonne A, de 1 à 10, tous tes fruits
Colone B, de 1 à 15, tous tes légumes.
Tu crées une zone de nom sur A1:A10 appelée "Fruits" (Insertion\Nom\Définir) et sur B1:B15 appelée "Légumes"

Enfin, tu crées une dernière zone de nom, dans la colonne E par exemple, qui va reprendre tous les noms des autres zones de Nom (si tu me suis. Là je ne vais traiter le cas que pour 2 types de produit, mais ça fonctionnera pour n zones).
Par ex : E1 : "Fruits"; E2 : "Légumes"
Et tu nommes cette zone par ex. "Type"

Dans ta feuille de sélection, tu crées donc ta liste (Données\Validation ... Source "=Type").
Tu as donc ta comboBox qui te donnera au choix "Fruits" ou "Légumes"

En fonction de ce que tu choisis, ça doit mettre à jour une autre cellule de ta feuille qui contiendra la liste des Fruits ou des Légumes.

On en arrive là où je coince, pour résoudre ça, on va faire 2 choses :
Tu crées déjà ta nouvelle cellule Combo en lui collant une liste (Données\Validation ... source "=Fruits" par ex.)
Tu dessines un bouton "Choisir" et tu lui colles un tout petit bout de code :
(dans mon ex, le choix entre Fruits et Légumes se fait dans la cellule D10, et la liste des Fruits ou des légumes s'affichent en F10)

Dim Temp As String
Temp = "=" & Range("D10").Value
With Range("F10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Temp
End With

Voilà, à chaque fois que tu appuyeras sur le bouton, la liste se mettra à jour en fonction de ton choix.


2/ Tu ne peux pas (ou alors, je n'ai jamais trouvé). Par défaut, dans Excel, il y a toujours au moins une case de sélectionnée. La seule chose que tu puisses faire pour te débarrasser d'une zone de sélection (je suppose que c'est de ce pb qu'il s'agit), c'est de mettre à la fin de ton code, une ligne qui va sélectionner une case par défaut, du style Range("A1").select

Si c'est pour te débarrasser de la zone de copie (encadrée par des tirets) suite à un copier/coller, rajoute à la fin de ton code : Application.CutCopyMode = False


3/Ne t'embête pas à le faire par code ton graphique.
Modifiable à la volée, je suppose que tu veux modifier les données sources, mais que celles-ci sont toujours sur la même structure ?
Rien de plus simple, tu crées d'abord ton graphique une fois à partir d'une ligne de données source.
Ensuite, avec l'éditeur de macro, tu crées une nouvelle macro, et tu vas modifier la source du graphique.
Te reste plus qu'à aller regarder comment est foutu le code, et à créer une macro qui modifie la source en fonction de tes critères (j'ai la flemme de le faire à ta place là ^^)

4/ Pour tes cellules non affectées par les scrolls, je pense que tu parles du fractionnement.
Tu te colles sur la ligne juste au desosus de là où tu veux figer (idem pour les colonnes), et tu fais Menu Fenêtre\Fractionner.
Tu places les limites comme tu le veux, et ensuite, tu fais le menu Figer les volets.
Et le tour est joué.

Molenn
0
Rejoignez-nous