Erreur de syntaxe

Yldie

XLDnaute Junior
Bonsoir à tous et bonne fête de la zik,

Je suis :mad::mad:
Mon code qui marche sur certains PC, ne marche pas sur le mien, voici ce code (mise en forme conditionnelle dépassant les 3 critères habituels) :

Sub conditionnel()
ActiveSheet.Unprotect ("password")
Application.ScreenUpdating = False
For Each Cellule In [B4:W34]
Cellule.Select
ActiveCell.Interior.ColorIndex = xlNone
With Cellule
Select Case .Value
Case Is = ""
ActiveCell.Interior.ColorIndex = 0
Case Is = "piscine 1"
ActiveCell.Interior.ColorIndex = 34
Case Is = "piscine 2"
ActiveCell.Interior.ColorIndex = 33
Case Is = "aqua"
ActiveCell.Interior.ColorIndex = 32
ActiveCell.Font.ColorIndex = 2
End Select
End With
Next Cellule
Application.ScreenUpdating = True
Range("a1").Select
ActiveSheet.Protect ("password")
End Sub

il me met à chaque fois qqchose comme erreur de compilation ou de syntaxe ou caché dans le module.......bref BUG à chaque fois et visiblement il apprécie pas Cellule et les [ : ]
HELP, AU SECOURS, A L'AIDE..........MERCI D'AVANCE !!!
 

Staple1600

XLDnaute Barbatruc
Re : Erreur de syntaxe

Bonsoir

Code:
Sub conditionnel()
Dim Cellule As Range
ActiveSheet.Unprotect ("password")
Application.ScreenUpdating = False
Range("B4:W34").Interior.ColorIndex = xlNone
For Each Cellule In Range("B4:W34")
Select Case Cellule.Value
Case Is = ""
Cellule.Interior.ColorIndex = 0
Case Is = "piscine 1"
Cellule.Interior.ColorIndex = 34
Case Is = "piscine 2"
Cellule.Interior.ColorIndex = 33
Case Is = "aqua"
Cellule.Interior.ColorIndex = 32
Cellule.Font.ColorIndex = 2
End Select
Next Cellule
Range("a1").Select
ActiveSheet.Protect ("password")
Application.ScreenUpdating = True
End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Erreur de syntaxe

Bonsoir,
dans ton fil précédent, tu parlais déjà de Bugs...

C'est bien, mais il vaudrait peut-être mieux donner EXACTEMENT le message d'erreur.....

Mettre toutes les foudres sur Excel, c'est louable, les éviter, c'est mieux....

Donc, avec un code qui fonctionne chez nous, on aura du mal à te dépanner....

PS, je t'avais déjà signalé que tu étais en Option Explicit, donc, que tu devais déclarer tes variables....

Edit, pas à la fête de la zik, JM?
 
Dernière édition:

Yldie

XLDnaute Junior
Re : Erreur de syntaxe

Salut Bh², bonjour staple,

Merci pour votre aide, mon erreur est une erreur de compilation avec Variable non définie : Cellule

Maintenant faut-il forcément faire précéder ma feuille (c'est ni un module ni un userform....) de la mention "Option Explicit" ???

Faut-il un truc du genre Dim Cellule As Variant ou autre !?!?

Merci encore pour vos conseils
 

Cousinhub

XLDnaute Barbatruc
Re : Erreur de syntaxe

Re-,

Comme le choix dans ton éditeur VBA est :

Option Explicit

Il faut impérativement déclarer tout ce qu'excel ne comprend pas, donc déclarer tes variables....

Si tu as lu ma réponse sur ton précédent fil et que tu as refait des essais avec ton code initial, cela devrait fonctionner

Maintenant, tu utilises des variables un peu "drôles" ("Cellule", ....)

mets plutôt des variables dont tu pourras t'en souvenir, mais sans utiliser des mots "propres" d'Excel

Et surtout DECLARE-LES, soit en Range, soit en Variant, selon l'utilisation

Edit, JM, ton code, tout comme le sien, fonctionne, mais son problème, c'est qu'il ne déclare pas ses variables......
 

Yldie

XLDnaute Junior
Re : Erreur de syntaxe

Merci Staple, en fait certaines cellules marchent très bien mais pas toutes (????), je continue à chercher mais c'est sûr cette macro fonctionnait très bien sur d'autres PC et bizarrement sur le mien......à moitié ou pas du tout !!!!
Que puis je tenter encore ???
 

job75

XLDnaute Barbatruc
Re : Erreur de syntaxe

Bonsoir,
J'interviens un peu tard sur ce fil...
Je crois que quand une variable est déclarée As Range, il faut obligatoirement la définir ensuite par Set. Ce n'est pas possible avec For Each. Donc la solution ici est de supprimer Dim Cellule As Range.
A+
 

Staple1600

XLDnaute Barbatruc
Re : Erreur de syntaxe

Re


Pourtant cela fonctionne (testé sous XL 2000)

CODE:
Sub conditionnel_ii()
Dim Cellule As Range
ActiveSheet.Unprotect ("password")
Application.ScreenUpdating = False
Range("B4:W34").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 2
For Each Cellule In Range("B4:W34")
Select Case Cellule.Value
Case Is = "piscine 1"
Cellule.Interior.ColorIndex = 34
Case Is = "piscine 2"
Cellule.Interior.ColorIndex = 33
Case Is = "aqua"
Cellule.Interior.ColorIndex = 32
Cellule.Font.ColorIndex = 2
End Select
Next Cellule
Range("a1").Select
ActiveSheet.Protect ("password")
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Erreur de syntaxe

Bonsoir,

Job75 :

Je crois que quand une variable est déclarée As Range, il faut obligatoirement la définir ensuite par Set. Ce n'est pas possible avec For Each.

Euh????????

Code:
Sub job75()
Dim cel As Range
For Each cel In Range("A1:A10")
    cel = "bonjour"
Next cel
End Sub

le problème vient du fait qu'il ne déclare pas ses variables, étant en Option Explicit
 

Discussions similaires

Réponses
6
Affichages
307

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035