Problème pour affecter une couleur de fond à une cellule... [Résolu]

CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 26 sept. 2005 à 15:23 - Dernière réponse : CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention
- 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...
Afficher la suite 

19 réponses

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

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?

Merci cs_CanisLupus 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Meilleure réponse
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 1 oct. 2005 à 17:30
3
Merci
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.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 26 sept. 2005 à 21:12
0
Merci
(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!!!
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 26 sept. 2005 à 21:43
0
Merci
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.
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 27 sept. 2005 à 09:15
0
Merci
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!
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 27 sept. 2005 à 13:32
0
Merci
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!!!!!!!
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 27 sept. 2005 à 19:07
0
Merci
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 !?
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 27 sept. 2005 à 21:51
0
Merci
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.
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 27 sept. 2005 à 22:11
0
Merci
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 !?
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 27 sept. 2005 à 22:22
0
Merci
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...

@+++
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 28 sept. 2005 à 08:49
0
Merci
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!!!
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 28 sept. 2005 à 08:59
0
Merci
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...
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 28 sept. 2005 à 09:06
0
Merci
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
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 28 sept. 2005 à 22:53
0
Merci
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
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 29 sept. 2005 à 08:53
0
Merci
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!
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 29 sept. 2005 à 23:32
0
Merci
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
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 1 oct. 2005 à 20:48
0
Merci
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"...?
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 1 oct. 2005 à 22:13
0
Merci
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.
CDAlstom 69 Messages postés mercredi 21 septembre 2005Date d'inscription 6 mars 2006 Dernière intervention - 3 oct. 2005 à 09:04
0
Merci
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!!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.