Rechercher : dans
Par :

Fixer une cellule active d'un tableau excel

Dernière réponse le 13 mar 2009 à 09:17:52 mic13710, le 23 fév 2009 à 13:47:20 
 Signaler ce message aux modérateurs

Bonjour,

J'ai un petit tableau Excel vide avec des titres de lignes et de colonnes.
Je voudrais à l'intérieur de ce tableau et uniquement dans la zone vide (hors titres)
1. que la cellule active change de couleur,
2. que je puisse récupérer les titres de ligne et de colonne correspondants pour effectuer des recherches sur d'autres tableaux,
3. qu'une nouvelle sélection invalide la sélection précédente,
4. que la couleur de la cellule sélectionnée soit conservée si je sors de ce tableau pour activer une autre cellule à l'extérieur du tableau.

Je suis sûr que c'est possible mais ne sais pas comment ni par quoi commencer. en VB peut-être, mais je suis ignare et ne demande qu'à apprendre.

Peut-être que cette question a été posée sur le forum, mais mes recherches n'ont rien donné.

Merci pour votre aide

Configuration: Windows 2000
Firefox 3.0.6

1

pilas31, le 23 fév 2009 à 14:42:53

Bonjour,

J'ai réalisé un petit exemple.
Pour comprendre le fonctionnement il faut regarder le code VBA en cliquant bouton droit sur le nom de l'onglet "EXEMPLE" et "visualiser le code"

http://www.cijoint.fr/cjlink.php?file=cj200902/cijuUKPYfA.xls

pour commencer selectionner la 1° case jaune...

Pour plus de précision ne pas hésiter à me demander.

A+ Cordialement,

Répondre à pilas31

2

mic13710, le 23 fév 2009 à 15:29:24

Super Pilas, c'est exactement ce que je cherchais. Merci beaucoup.

Par contre, j'ai un problème sur des cellules qui ont un format conditionnel actif.
Je m'explique, mes lignes sont les années (2009 à 2013) et mes colonnes les mois.
J'ai un format conditionnel sur tout le tableau qui colore en jaune la ligne de l'année en cours (2009 en l'occurrence).
J'ai bien entendu changé le ColorIndex du fichier VBA à 3 (rouge).
Ca fonctionne nickel pour les cellules 2010 à 2013 (conditionnel faux) mais pas pour 2009 (conditionnel vrai) qui restent jaune. Le renvoi d'info des titres se fait bien, mais ça c'est normal.

Y'a t'il un moyen de contourner le format conditionnel ou bien est-ce que je dois le supprimer?

Répondre à mic13710

3

pilas31, le 23 fév 2009 à 16:05:31

Oui, je viens de tester avec la mise en forme conditionnelle cela ne fonctionne pas.
Apparemment Il n' y a pas d'autre solution que de l'enlever.

A+
Cordialement,

Répondre à pilas31

4

mic13710, le 23 fév 2009 à 16:14:08

Je crois que le problème est incontournable car le format conditionnel est prioritaire sur les autres formats.
Je l'ai donc supprimé et je l'ai conservé seulement sur les lignes de titre en mettant en jaune l'année et le mois en cours.

Merci encore pour ton aide qui m'a été d'un grand secours.

Répondre à mic13710

5

mic13710, le 12 mar 2009 à 19:19:01

Salut Pilas,

Après plusieurs jour d'essai, le code marche bien, mais il y a un problème d'affichage lors de la première sélection.
En effet, lorsqu'on ouvre le fichier, ILIG_SELECT et ICOL_SELECT n'ont aucune valeur attribuée et donc si je sélectionne une autre cellule, la dernière sélection sauvegardée reste colorée donnant ainsi 2 cellules colorées au lieu d'une.
Pour éviter ça, il faut d'abord commencer par cliquer sur la cellule colorée pour affecter les valeurs correctes aux 2 variables, et après ça marche sans pb. Mais c'est pas glop.

J'ai bien essayé de remplacer Cells(ILIG_SELECT, ICOL_SELECT).Interior.ColorIndex = x1None
par: Range("C3:N7").Interior.ColorIndex = x1None, mais ça ne change rien.

As-tu une idée pour contourner le problème?

D'avance merci.

Répondre à mic13710

6

pilas31, le 12 mar 2009 à 21:41:19

Bonsoir,

Oui je comprends le problème, je te propose de le résoudre à l'ouverture ou à la fermeture du classeur pour celà du mets le code suivant dans le dossier macros de "ThisWorkbook" :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("EXEMPLE").Range("C2:J20").Interior.ColorIndex = x1None
End Sub


dans cet exemple quand tu fermes ton classeur, il enlève la couleur de ta plage (dans mon exemple c'est la plage C2:J20 de la feuille "EXEMPLE")

A+
Cordialement,

Répondre à pilas31

7

mic13710, le 12 mar 2009 à 22:52:33

Merci Pilas.

Ton code fonctionne bien. Cependant, comme j'ai déjà une routine Private Sub Workbook_Open() dans mon Workbook, j'y ai inséré le code qu'il me fallait pour mon application et ça marche aussi.

L'avantage, c'est qu'il ne me demande pas de sauvegarder avant de fermer. Par contre, ça ralenti un petit peu l'ouverture du fichier. Mais je ne suis pas pressé.

Je ne sais pas si le (Cancel As Boolean) de ton Private Sub Workbook a de l'importance. En tout cas, ça marche sans.

Répondre à mic13710

8

pilas31, le 12 mar 2009 à 23:16:41

Oui, tu peux sans problème le mettre à l'open. Quant à Cancel c'est un booléen qui ne sert que dans la fonction close éventuellement a faire un test pour empécher la fermerture du classeur si des conditions ne sont pas remplies... Cordialement,

Répondre à pilas31

9

 mic13710, le 13 mar 2009 à 09:17:52

Bon donc je n 'ai rien oublié dans mon code.
Merci pour tout pilas.
Va falloir que je creuse un peu VBA si je veux progresser.

Répondre à mic13710