OVH Cloud OVH Cloud

colorer cellule en VBA

49 réponses
Avatar
Pascal
bonjour,
Pourriez-vous m'aider à réaliser cette SUB ?
je cherche à colorer les cellules vide dans la plage A3:M200 en appui sur
bouton

Private Sub cmdCelluleVide_Click()
Dim Target As Range
Target.Value = "a3:m200"
If Target.Value = "" Then
Range(Target.Address, Target.Offset(0, 0).Address).Interior.ColorIndex
= 5
End If
End Sub

Merci d'avance

Pascal

10 réponses

1 2 3 4 5
Avatar
Misange
merci Denis d'avoir mis ici ce joli test de JW.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

| Dim C
***Pas vraiment suffisant pour être efficace

voici un exemple d'une procédure élaborée par John Walkenback.:

Tu fais rouler cette procédure dans un module standard telle qu'elle est
écrite et tu refais rouler cette fois en mettant une apostrophe devant chaque
ligne débutant par DIM pour désactiver la déclaration des variables ou
enlève seulement leur type ...

Le résultat devrait t'en convaincre ....
-------------------
Sub TimeTest()

Dim A As Integer, B As Integer, C As Integer
Dim x As Integer, y As Integer
Dim i As Integer, j As Integer
Dim StartTime As Date, EndTime As Date

StartTime = Timer

x = 0
y = 0
For i = 1 To 5000
For j = 1 To 1000
A = x + y + j
B = y - x - i
C = x - y - i
Next j
Next i

EndTime = Timer

MsgBox EndTime - StartTime

End Sub
-------------------




"Jacky" a écrit dans le message de news:
Re...
oui si tu es en:
Option Explicit
Les variables étant Variant par défaut
Dim C
devrait être suffisant


Avatar
MichDenis
| Et en aucun cas je me rallierai à cette dynamique

Avec une telle attitude, il ne fallait pas poser la question...
Il n'y avait aucune chance que tu puisses changer d'avis
nonobstant les arguments élaborés.

Pas de problème, je n'ai rien à vendre.



a écrit dans le message de news:

Rebonjour MichDenis

Tout d'abord je te remercie pour ta réponse

"Si tu as déclaré la variable C as range, tu aura droit à l'aide
automatique
de la liste déroulante des propriétés et méthodes de l'objet...c'est
une aide
mémoire non négligeable (pour moi) et cela évite aussi bien des
fautes
d'orthographes (indispensable pour moi)..."

C'est effectivement un bon argument mais pour l'élaboration du code
Celà n'induit pas pour autant de le restituer dans la proposition


"Perso, quand je lis un code que je n'ai pas créé, j'aime bien
regarder la déclaration
des variables... en un seul coup d'oeil, cela donne une idée des
objets utilisés dans
la procédure !"

L'argument aussi se tient mais seulement pour les lecteurs initiés


"Ceci étant, tu fais à ta tête et c'est ok pour moi...tout ceci pour
n'épargner quelques
secondes au moment d'écrire la procédure...c'est un argument plutôt
faible mais qui
suis-je pour juger ! "

J'ai du mal à comprendre : "Ceci étant, tu fais à ta tête et c'est ok
pour moi"

Ce ne sont pas mes intentions je te rassure : "tout ceci pour
n'épargner quelques

secondes au moment d'écrire la procédure"


Il est vrai que pour m'investir à l'éboration de quelques lignes
supplémentaires ce n'est pas tant le temps à consacrer qui me motive
mais la réelle utilité mettant en jeu le résultat escompté

Et en aucun cas je me rallierai à cette dynamique :

"j'ajouterai que le typage correct est également une des régles de
l'art "

Je respecte ceux qui ne progresse que dans cet esprit grand bien leur
fasse

Mais je ne suis pas là pour le côté artistique mais pour progresser
efficacement et apporter mon aide au mieux de mes connaissances si
faibles soient elles je le reconnait mais dans le seul souci de
satisfaire nos interlocuteurs
Je je pense pas qu'ils soient sensibles à la chorégraphie des lignes
de code

Que l'on me démente !!!!
Avatar
Jacky
re...
Celà en fait 2 de bizarrerie dans la même journée

--
Salutations
JJ


"MichDenis" a écrit dans le message de news:
%
Si vous utilisez l'enregistreur de macro pour enlever la couleur
de fond sur une plage de cellule, Excel propose ceci comme code:

Selection.Interior.ColorIndex = xlnone

Si vous utilisez dans la fenêtre de l'éditeur de code, l'explorateur
d'objets
et faite une petite recherche sur xlnone, vous remarquerez qu'excel
attribue à cette constante la valeur suivante : -4142 (&HFFFFEFD2)

Je pourrais écrire le code suivant :

Dim x As Excel.Constants
x = xlNone
Range("A1:A10").Interior.ColorIndex = x

X devrait valoir alors : -4142

Pourtant :
Range("A1:A10").Interior.ColorIndex = 0
fonctionne aussi ....

Quelqu'un a une explication ?






"Pascal" ,com> a écrit dans le message de news:
%
Hello,
je commence toujours mon code par option explicit habitude prise avec VB
le code fonctionne très bien, merci
voici pour ceux que cela interesse, la version finale
----------------------------------------------------
-ClickActiver est déclarer Boolean avec valeur False en entrée

sub xxxx()
Dim c As Range
'si on à déjà coloré les cellules on décolore
If ClickActiver = True Then Application.ScreenUpdating =
False
For Each c In [c3:n200]
c.Interior.ColorIndex = 0 '0 = aucun remplissage
Next
ClickActiver = False
Else
'sinon on colore les cellules
Application.ScreenUpdating = False
For Each c In [c3:n200]
If c = "" Then c.Interior.ColorIndex = 50 ' vert
Next
ClickActiver = True
End If
End sub

Pascal

"MichDenis" a écrit dans le message de news:

Si dans le haut de son module, il est inscrit : Option Explicit
Il devra déclarer cette variable et c'est une excellente habitude
à prendre pour ceux que cela concerne...

Dim C as Range



a écrit dans le message de news:

Rebonjours Pascal

Non pas besoin de déclarer la variable le code fonctionne en l'état

Fais des essais et dis moi !!!!









Avatar
Misange
Pas de problème, je n'ai rien à vendre.
Ah ça tu charries c'était 100 euros l'autre jour (pas fou je vois que tu

ne factures pas en dollars :-))

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net


Avatar
francois.forcet
Rebonjours MicheDenis

Il faut considérer l'intégralité de mon propos :

Et en aucun cas je me rallierai à cette dynamique :
"j'ajouterai que le typage correct est également une des régles de
l'art "


Ce qui veux dire que pour toute autre dynamique qui prone l'efficacité
et l'utilité je suis à votre écoute moi qui est tant à apprendre !!! !

Vous n'allez pas me faire croire que c'est le seul privilège des
puristes !!!

Ce serait particulièrement décevant

Merci d'avance
Avatar
MichDenis
Une procédure de ce genre, te donne les Guid des variables "OBJETS"
inscrit dans la base de registre de Windows. Chaque objet en a un... et
lorsque l'on déclare sa variable objet, on indique à windows de quel objet
il s'agit ....de même est-il possible pour lui de nous donner dans la liste
déroulante, la liste des propriétés et méthodes de l'objet.

Cette sub n'a pas été testé parce que quelqu'un est venu me prendre ce fichier...
comme je suis le seul à l'utiliser, c'est donc quelqu'un de l'extérieur !
Est-ce qu'un intru se serait introduit dans ma machine ?

Si quelqu'un a windows xp et excel 2003, ce serait gentil de m'envoyer
sur mon adresse Hotmail une copie du fichier : TLBINF32.DLL que l'on
retrouve dans c:WindowsSystem32 pour une installation standard.

'------------------------------------
Sub Trouver_Le_GuID_Des_Objets()
'******************************************************
'Requires a reference to TypeLib Information (TLBINF32.DLL)
'******************************************************
On Error Resume Next
Dim TLI As New TLIApplication
Dim x As Range
Set x = Range("A1:A10")
MsgBox TLI.InterfaceInfoFromObject(Obj).GUID
End Sub
'------------------------------------




"Modeste" a écrit dans le message de news:
%
Bonsour® MichDenis avec ferveur ;o))) vous nous disiez :

la notation Hongroise


Encore heureux qu'on ne soit pas obligé de déclarer
les variables objets par leur Quid inscrit dans la base
de registre de windows ...;-)))


;o)))

tu veux parler des GuId ???
comme ceci :
Private Sub Workbook_Open()
On Error Resume Next
' Ajout de la bibliotheque Microsoft Speech object library
ActiveWorkbook.VBProject.References.AddFromGuid "{C866CA3A-32F7-11D2-9602-00C04F8EE628}", 5, 0
End Sub

dans un module :
Option Explicit
Public Vocal As New SpVoice
Public toto As String

Sub Parler(phrase As String) '
Vocal.Speak phrase
End Sub

Sub Test()
Parler "Bonjour Denis !"
End Sub

--
--
@+
;o)))


Avatar
MichDenis
Ah ça tu charries c'était 100 euros l'autre jour (pas fou je vois que tu
ne factures pas en dollars :-))

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Avatar
MichDenis
| > Pas de problème, je n'ai rien à vendre.
| Ah ça tu charries c'était 100 euros l'autre jour
*** et je n'ai pas changé d'idées

| pas fou je vois que tu ne factures pas en dollars
*** C'est seulement pour que la majorité comprenne...
;-))

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Avatar
MichDenis
merci Denis d'avoir mis ici ce joli test de JW.
*** Et c'est gratuit... l'histoire ne dit pas si M. Walkenback apprécie ...
;-)
Avatar
Misange
Bonjour François,

Justement Denis a donné d'autres exemples qui montrent très bien
l'utilité de déclarer ses variables outre l'aspect "règle de l'art"
- rapidité
- accès aux méthodes et propriétés
- lisibilité du code

Je t'accorde que quand on écrit deux lignes de code pour répondre à
quelqu'un sur un forum, il peut être tentant de ne pas tout mettre, y
compris les déclarations de variables. Mais de là à conseiller à des
questionneurs de ne pas déclarer il y a un pas ! Chacun fait ensuite ce
qu'il veut. S'obliger à déclarer ses variables quand on se met au VBA ça
oblige aussi à se poser les questions sur les objets qu'on manipule.
C'est un booléen ce truc ? un range ?
Ca évite de se retouver avec des messages de type "propriété ou méthode
non gérée par cet objet".

Quand tu te déplaces dans une ville que tu connais, tu as tes chemins,
tes habitudes. Tu passes pas forcément par le chemin le plus court parce
que tu as tes repères. Avec excel c'est un peu pareil on peut souvent
obtenir le même résultat apparent final en utilisant des formules
(ultrarapides) ou une macro (plus lente mais parfois plus facile à coder
qu'une formule de 3 lignes); en ne déclarant pas les variables ou en le
faisant; en ajoutant des bouts de code inutiles mais qu'on comprend
bien... Mais si un étranger me demande comment aller d'un endroit à un
autre dans ma ville, j'essaie de lui indiquer le chemin le plus logique,
pas celui que je prends parce que j'adore la rue truc et ses jolies
maisons ! Pareil avec excel : autant indiquer les bonnes pratiques,
celles qui sont systématiquement recommandées par tous les gourous
d'excel depuis des années (il doit bien y avoir une raison quand même tu
ne crois pas, ce ne sont pas tous des gens amoureux de l'art de coder !)

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Rebonjours MicheDenis

Il faut considérer l'intégralité de mon propos :

Et en aucun cas je me rallierai à cette dynamique :
"j'ajouterai que le typage correct est également une des régles de
l'art "


Ce qui veux dire que pour toute autre dynamique qui prone l'efficacité
et l'utilité je suis à votre écoute moi qui est tant à apprendre !!!!

Vous n'allez pas me faire croire que c'est le seul privilège des
puristes !!!

Ce serait particulièrement décevant

Merci d'avance


1 2 3 4 5