Excel : couleur dans une cellule (en VB)

Résolu
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 - 21 sept. 2005 à 09:18
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 - 21 sept. 2005 à 15:40
Bonjour.

Je génère plusieurs fichiers "excel" depuis mon programme en VB6.

Dans certains cas, je mets une couleur dans les cellules selon la formule suivante :

AppExcel.Worksheets(1).Range(Colonne & "" & Ligne).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With

Cela marche très bien pour le 1er fichier mais ca plante des le 2ème.

Quelqu'un peut-il m'expliquer pourquoi ? Grand merci d'avance.

8 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
21 sept. 2005 à 13:09
Colonne prend bien des valeurs alphanumériques ?

(je cherche, je cherche, mais comme il y a peu de code dispo ... c'est dur)

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
21 sept. 2005 à 10:41
Même réponse que pour ton autre question : "Quel est le message d'erreur obtenu ?"



ce que tu donnes comme code est tout à fait correct. L'erreur vient d'ailleurs.


Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
21 sept. 2005 à 11:01
Lors du "2ème passage", l'erreur se produit sur la ligne "With Selection.Interior"

AppExcel.Worksheets(1).Range(Colonne & "" & Ligne).Value = MaChaine
AppExcel.Worksheets(1).Range(Colonne & "" & Ligne).Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
21 sept. 2005 à 11:08
J'oubliais l'erreur : "variable objet ou variable bloc With non définie" (erreur d'exécution 91).

Mais ce n'est pas systématique lors du 2 ème passage. Des fois ca marche plusieurs fois de suite ?????
0

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

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Modérateur Dernière intervention 23 décembre 2008 23
21 sept. 2005 à 11:36
As tu vérifié à ce moment-là les valeurs des variables colonne et ligne ?



Au passage :



AppExcel.Worksheets(1).Range(Chr(CStr(Colonne)+64) & CStr(Ligne)).Value

C'est plus propre que de concaténer deux entiers avec une chaine vide.



Chr(CStr(Colonne)+64 renvoit "A" si colonne vaut 1, "B" si colonne vaut 2 ... dans la limite de colonne < 27.

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
21 sept. 2005 à 12:21
Meme comme cela ca plante encore (mais pas toujours) : les lignes et colonnes sont OK.
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
21 sept. 2005 à 13:19
Oui j'ai bien par exemple "B2" pour la 2ème ligne et la 2ème colonne.

Quand je faisais les fichiers un par un ca plantait au 2ème fichier. Maintenant j'ouvre l'application excel, pour chaque fichier je définis FichierExcel, je fais mon traitement, je ferme FichierExcel, je passe au fichier suivant puis je ferme l'application excel. C'est peut-être au niveau de la fermeture et du raffraichissement de la memoire que ca se passe ?

En tout cas merci beaucoup pour ton aide.
0
cs_pcvesoul Messages postés 123 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 25 juillet 2007 1
21 sept. 2005 à 15:40
Comme cela ca a l'air de marcher :

AppExcel.Worksheets(1).Select
AppExcel.Cells(Lig_Excel, Col_Excel + 1).Select
AppExcel.Worksheets(1).Cells(Lig_Excel, Col_Excel + 1).Value = Nom

AppExcel.Worksheets(1).Select
AppExcel.Cells(Lig_Excel, Col_Excel + 1).Select
With AppExcel.Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With


Merci beaucoup et bonne continuation.
0