Problème pour affecter une couleur de fond à une cellule...

Résolu
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006 - 26 sept. 2005 à 15:23
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006 - 3 oct. 2005 à 09:04
Bonjour!

Je voudrais au cours de mon prog en vba affecter la couleur rouge au fond de la cellule courante sur laquelle le prog tarvaille à ce moment là...

Moi, je voudrais mettre:

Worksheets("dataPV").Cells(dataline + 3, col).Interior.ColorIndex = 3

"dataPV" est bien la bonen feuille sur laquelle je fais plein d'autres trucs avant et après...
Les lignes et colonnes sont celles de la celulle "courante"...

Mais, voilà, ça ne marche pas!?!

J'ai le message d'erreur suivant:

Erreur d'exécution '1004':
Impossible de définir la propriété ColorIndex de la classe Interior.

Merci de m'aider car là je tourne en rond...

19 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 sept. 2005 à 17:41
Salut,
1 - que valent dataline et col ?
2 - ta feuille est-elle protégée ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
1 oct. 2005 à 17:30
Bonjour,

Merci de l'envoi. Le fichier me marque aussi le problème expliqué... MAIS ! la raison du problème est déjà une incompréhension. Le code n'est pas exécuté à partir d'une Userform, mais à partir d'un bouton placé sur une feuille de calcul... Cela fait toute la différence, car il faut gérer le pb de focus. En effet, le fait d'appuyer sur le bouton, alors le focus placé sur la case active (en principe) se place sur le bouton. Or "cells.interior" a bessoin d'un focus actif pour s'appliquer... et voilà la cause du problème...

Dans son cas, il faut le code suivant :

Worksheets("Feuil2").Activate 'ou Select
Worksheets("Feuil2").Cells(2, 3).Select
Selection.Interior.ColorIndex = 3

Le bouton étant sur Feuil1.

J'arrête ici les explications, que j'ai déjà donné à CDAlstom, en renvoi...

Amicalement,
Us.
3
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
26 sept. 2005 à 21:12
(Answers)

1. Si c'est par rapport aux limitations d'Excel (genre 256 colonnes), a priori, le pb ne vient pas de là...

2. "protégée", c'est-à-dire? On peut définir des niveaux de protections qui empêcheraient certaines manip avec du code vba...? Si oui, à la limite je peux enlever toutes les protections pour essayer mais où se trouve ce réglage...?

Merci d'avance!!!
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
26 sept. 2005 à 21:43
Bonsoir,

Pour l'histoire de la protection de la feuille, c'est dans Outils > Protections , tout simplement... et de plus, j'ai vérifié qu'une feuille protéger génére l'erreur cité avec ton code. CanisLupus a sûrement visé juste...

Amicalement,
Us.
0

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

Posez votre question
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
27 sept. 2005 à 09:15
Bon, je comprends pas...

J'ai regardé cette histoire de protection de la feuille mais il n'y avait aucune protection... En en mettant, on a bien un message comme tu as du le voir "Us" mais ce n'est pas celui dont je parle au début, le mien est:
"Erreur d'exécution '1004':
Impossible de définir la propriété ColorIndex de la classe Interior."
J'ai donc cette erreur alors que la feuille (ou même le classeur) n'est pas protégé...

De plus, j'ai essayé sur un autre PC et là, il n'y a pas de pb mais il faut que ça marche sur celui-là...

Merci de m'aider si vous pouvez!
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
27 sept. 2005 à 13:32
Nouvelle épisode!

Pour faire simple, j'ai fait un truc comme ça:

Private Sub CommandButton1_Click()
Worksheets("feuil1").Cells(2, 3).Interior.ColorIndex = 3
End Sub

J'ai encore eu le message d'erreur:

Erreur d'exécution '1004':
Impossible de définir la propriété ColorIndex de la classe Interior.

Et par contre si je clique sur le bouton "lecture" dans l'éditeur VB d'Excle bah là ça marche...

Help!!!!!!!
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
27 sept. 2005 à 19:07
Ben là, je ne vois pas, j'ai essayé chez moi ça fonctionne très bien.
A tout hasard, qu'as tu dans les références ? (Outils/Références sous vb Editor)

Moi, j'ai (avec excel 97) :

Visual Basic For Applications
Microsoft Excel 8.0 Object Library
OLE Automation
Microsoft Forms 2.0 Object Library
Microsoft Office 8.0 Object Library

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
27 sept. 2005 à 21:51
Bonsoir,

STOP ! Quand la feuille est protégée l'erreur d'exécution qui se produit est belle et bien l'erreur 1004 ! exactement comme tu l'as écris :
"Erreur d'exécution '1004':
Impossible de définir la propriété ColorIndex de la classe Interior."

=

Avançons par étape pour isoler le problème.

Je suis sûr que le problème se situe autour de la protection... Vérifie de nouveau, Outils > Protections et regarde si dans les 3 menus présents, il y en a au moins un qui commence par "Ôter la protection" ... donc cliquer dessus.

Ensuite, test si tu peux mettre dans excel une case avec une couleur de fond normalement (donc sans passer par une macro). Si il y a une protection, alors c'est impossible. C'est donc un autre moyen de voir...

Essaye de faire une macro, par l'enregistreur (bouton rond = RECord). En principe la macro contiendra ce code :

Sub Macro3()
Range("C3").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End Sub

Si la macro se construit sans problème, alors tout doit fonctionner.

=

Dernière alternative pour localiser le problème, c'est d'ouvrir un nouveau classeur, et d'essayer la macro ci-dessus, par exemple...

=

Si rien ne marche, où cela bloque ?

Amicalement,
Us.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
27 sept. 2005 à 22:11
us_30, je suis bien ok avec toi, mais bon, si CDAlstom dit que ce n'est pas ça, ou il se trompe ou il y a autre chose (j'ai eu tellement de surprises avec vba Excel). Je te laisse poursuivre cette discussion, ma compétence en VBA Excel s'arrête là.


-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
27 sept. 2005 à 22:22
Merci de m'aider!

(lol je sais quand même faire une macro au fait même si j'ai appris il y a peu de temps)

Je vous tiens au courant d'ici demain...

@+++
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
28 sept. 2005 à 08:49
A "CanisLupus":

Tu as comme ref: (avec excel 97)
Visual Basic For Applications
Microsoft Excel 8.0 Object Library
OLE Automation
Microsoft Forms 2.0 Object Library
Microsoft Office 8.0 Object Library

J'ai pour ma part sur ce poste bah pareil!!!
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
28 sept. 2005 à 08:59
A "us_30":

_ du côté des protections, RAS...

_ pour mettre une couleur de fond manuellement, ça marche donc oui pas de protections mais ça on le savait à force lol

_ pas de problème du côté macro non plus!

_ je peux exécuter la macro aussi bien dans le classeur à problème quand dans un autre d'ailleurs le problème est général...

Donc bah voilà, rien a changer... Savoir où ça bloque bah comme je l'ai mis plus haut avec l'exemple:

Private Sub CommandButton1_Click()
Worksheets("feuil1").Cells(2, 3).Interior.ColorIndex = 3
End Sub

Là ça marche pas mais en passant ça dans une macro là ça marche...
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
28 sept. 2005 à 09:06
Par contre, pour contourner le problème, je pourrai utiliser "Range"...

Mais étant donné que je veux travailler sur une feuille précise on va dire "MaFeuil" et que je veux mettre la cellule (i,j) (i et j sont des variables), quelle sera la syntaxe...?

Parce que ça, Range(Worksheets("Mafeuil").Cells(i, j)).Select marche pas...

Merci de votre aide
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
28 sept. 2005 à 22:53
Bonsoir,

La seule hypothèse que je vois, c'est un "dysfonctionnement" dans l'interprétation du code de CommandButton, mais bon, c'est pas clair... Faudrait-il réinstalller Excel ?... faute de savoir quel composant est en cause... je pense que c'est à essayer, en désinstallant correctement excel, avant son réinstallation.

Cette hypothèse se justifie par le fait que pour moi (comme pour CanisLupus) le code que tu proposes fonctionne parfaitement... et si j'ai bien compris, tu l'as aussi "essayé sur un autre PC et là, il n'y a pas de pb" (ton post du 27/9)... Donc, il n'y que sur ton PC actuel où le problème se pose. Ce n'est donc pas un problème de programmation en soit. Chercher une solution de contournement, n'est pas une vraie solution, car d'autres pb paradoxaux pourront survenir...

Amicalement,
Us.


PS : Sinon, dans ton idée de contournement, comme avec la macro ça marche, tu pourrais essayer avec un appel à la macro justement... En clair :

Dans ton userform,

Private Sub CommandButton1_Click()
Call Macro1
End Sub

Dans un module,

Sub Macro1()
Worksheets("feuil1").Cells(2, 3).Interior.ColorIndex = 2
End Sub
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
29 sept. 2005 à 08:53
L'appel à la macro cause la même erreur...
C'est donc un problème "piouuu"...
Mais, au fait, ça me fait la même chose avec mon autre outils de travail qui est un pc portable avec aussi excel 97...
Ce serai qd mm dingue tant la fonction est simple et nécessaire, tant il y a eu des millions d'utilisateurs d'excel 97 que ce problème viennzent de la version d'excel...
Prace que avec 2000 ou 2003, ça marche...
Je me demande si c'est pas parce que je ne suis pas administrateur sur ces 2 postes avec excel 97... mais bon!

En tout cas, j'attends la MAJ de 97 vers 2000 quoi...

Merci qd même!
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
29 sept. 2005 à 23:32
Bonsoir,

Peux-tu m'envoyer un fichier exemple qui ne fonctionne pas ? ... J'aimerais étudier plus en détail la question...

Merci d'avance,
Us.

us_30@hotmail.com
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
1 oct. 2005 à 20:48
J'ai pas le PC en cause là ni même excel 97 mais lundi je manquerai pas de vérifier! Merci!

Mais donc pour excel 2000 et 2003, si il n'y a pas ce problème, c'est qu'ils ont supprimer ou contourner cette barrière de"focus"...?
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
1 oct. 2005 à 22:13
Euh... je ne sais pas, il faudrait que je teste... mais comme tu l'as déjà fait...

Amicalement,
Us.

PS : Si le fichier que je t'ai renvoyé, réponds bien à ta question, je t'invite à marquer "réponse acceptée", qu'ainsi à CanisLupus car telle que la question était posée, sa réponse est juste... La protection de la feuille, déclenche exactement le même message.
0
CDAlstom Messages postés 69 Date d'inscription mercredi 21 septembre 2005 Statut Membre Dernière intervention 6 mars 2006
3 oct. 2005 à 09:04
La solution d'activer la feuille et de sélectionner la cellule avant de faire ce qu'on a à faire fonctionne bien avec excel 97 (avec 2000 et 2003 aussi)...

Bon, pour que ça marche avec 97, il me faut 3 lignes au lieu d'une, ça va pour ce cas mais heureusement que c'est pas comme ça pour tout car un code de 3000 lignes au lieu de 1000, ça change!

Merci bien à vous deux et au site en général!!!
0
Rejoignez-nous