Excel : couleur dans une cellule (en VB)

[Résolu]
Signaler
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
-
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
-
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

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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.
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
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
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
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 ?????
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
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.
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
Meme comme cela ca plante encore (mais pas toujours) : les lignes et colonnes sont OK.
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
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.
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
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.