correction de code ?

M

mikepers

Guest
Bonsoir et encore merci.
J'ai récupéré un code qui me paraissait très interessant, qui permet d'utiliser une cellule comme une case à cocher. Lorsqu'on double clique dessus, la cellulle affiche un symbole tiré de la police 'Marlett',et permet de 'valider' visuellement un choix. Hélas, sous Excel 97
( version que j'utilise au boulot ), la macro bogue en me signifiant une erreur sur 'end if'. Pouvez vous contrôler le code et me dire ce qui ne va pas? Merci..............................
le code:
Private Sub Worksheet_beforeDoubleClick(Byval Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range(A1:A100')) Is Nothing Then Cancel = True 'prevent going into Edit mode
Target.FontNme = 'Marlett'
If Target = vbNullString Then Target = 'a'
Else
Target = vbNullString
End if
End if

End Sub
 

JC de Lorient

XLDnaute Impliqué
salut

essaye comme ça :

Private Sub Worksheet_beforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range('A1:A100')) Is Nothing Then Cancel = True 'prevent going into Edit mode
Target.Font.Name = 'Marlett'
If Target = vbNullString Then
Target = 'a'
Else:
Target = vbNullString
End If
End Sub

JC
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Mikepers, bonsoir le forum,

Essaie comme ça :


Private Sub Worksheet_beforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

'Condition 1 : si le double clic se fait dans la plage A1:A100
If Not Application.Intersect(Target, Range('A1:A100')) Is Nothing Then
Cancel = True 'évite le mode édition lié au double clic
Target.Font.Name = 'Marlett' 'police 'Marlett'

If Target = vbNullString Then 'condition2 : si la cellule est vide
Target = 'a' 'la cellule prend la valeur 'a' (case cochée avec cette police)
Else 'sinon
Target = vbNullString 'la cellule est vidée
End If 'fin de la condition 2

End If 'fin de la condition 1

End Sub

Édition :

Bonsoir JC de Lorient, on s'est croisés. J'avais pensé à cette option aussi mais dans ce cas la restriction à la plage A1:A100 ne fonctionne plus...

Message édité par: Robert, à: 27/02/2006 23:00
 

Gérard DEZAMIS

XLDnaute Accro
Bonsoir Mikepers

Une petite erreur avec
Range('A1:A100') : il y a un ' qui a fait le saut
et une autre avec
Target.Font.Name = 'Marlett'
le target.FontNme ne me semble pas correct

sans garantie :(
@+GD

PS: M..... de M..... de M..... pour une fois que je croyais tenir le VBA entre mes mains puissantes. Deux lascars l'avaient déjà étranglé depuis 10 minutes. Merci Joomla ! 3 fois CtrlA CtrlC CtrlV (bien joué l'astuce préservative !)pour avoir la honte !
Bon....
Bonne soirée à tous quand même et un amical bonsoir aux deux lascars JC et Robert


Message édité par: Gérard DEZAMIS, à: 27/02/2006 23:14
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Mikepers, JC de Lorient, Gégé moignon, bonjour le forum,

Gégé moignon !!! C'est-y pas mignon ce surnom que je viens de t'attribuer mon Gégé la paluche ? Bah c'est pas bien grave, il y a tellement d'autres choses à faire avec ses mains...
 
M

mikepers

Guest
Bonsoir!
merci pour la correction, celà fonctionne super bien mais j'ai un petit soucis: malgré la sélection de plage('A1:A100'), la macro s'exécute dans toutes les cellules de la feuille...
Ca me pose un souci, je comprend pô.
Vous voyez le truc ?
Merci
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir mikepers, JC de Lorient, Robert, Gérard DEZAMIS,

mikepers, tu as dû te tromper en recopiant le code de Robert, car ce code indiqué plus haut est tout à fait correct et fonctionne parfaitement.

Cela dit, pour simplifier et le rendre peut-être un peu plus clair, moi je l'écrirais comme ça :
Private Sub Worksheet_beforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
      If Not Intersect(Target, Range('A1:A100')) Is Nothing Then
            Cancel = True
            Target.Font.Name = 'Marlett'
            Target = IIf(Target = vbNullString, 'a', vbNullString)
      End If
End Sub
Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves