inscrire "1" par un clic droit sur une selection de plusieurs cellules

pascal21

XLDnaute Barbatruc
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
If Intersect(Target, Columns("f:j")) Is Nothing Then Exit Sub
If IsEmpty(ActiveCell.Value) Then

ActiveCell.Value = "1"
ElseIf ActiveCell.Value = "1" Then

ActiveCell.Value = ""
End If
Cancel = True
End Sub
bonjour le forum
grace à ce bout de code un "1" s'inscrit lorsque je clique droit sur une cellule des colonnes "f:j"
comment faire pour avoir la même fonction (clic droit) avec une selection de plusieurs cellules ; par ex. de a1 à b5
le but est de pouvoir remplir une zone de cellules d'un seul clic
j'espère m'être expliqué clairement
merci
 

Pierrot93

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Bonjour Pascal,

si j'ai bien compris...

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
For Each c In Target
    c = IIf(IsEmpty(c.Value), 1, Empty)
Next c
Cancel = True
End Sub

bonne fin d'après midi
@+
 

pascal21

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

bonsoir pierrot
ça ne fonctionne pas j'ai dù mal m'expliquer
je selectionne une plage de cellules j'aimerais ,grace à un clic droit, voir s'inscrire "1" dans toute la selection
 

pascal21

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

re
autant pour moi
comme j'avais reduit la largeur des colonnes au minimum je ne voyais pas le chiffre s'inscrire
ça fonctionne
mais peut-on maintenant reduire la zone au secteur b3:cs369
merci
 

Staple1600

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Bonjour à tous



A tester
edit: test OK

edit 2: finalement test pas ok, si par exemple on sélectionne B2:C15
Les cellules de plage en ligne deux recoivent le 1
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
If Not Intersect(Target, Range("B3:CS369")) Is Nothing Then
For Each c In Target
c = IIf(IsEmpty(c.Value), 1, Empty)
Next c
End If
Cancel = True
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Re, bonjour Staple:)

ou comme ceci :

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
If Intersect(Target, Range("B3:CS369")) Is Nothing Then Exit Sub
For Each c In Target
c = IIf(IsEmpty(c.Value), 1, Empty)
Next c
Cancel = True
End Sub

bonne soirée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Re

très juste staple, ta remarque dans ta 2ème édition, alors comme ca, peut être :

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
For Each c In Target
If Not Intersect(c, Range("B3:CS369")) Is Nothing Then c = IIf(IsEmpty(c.Value), 1, Empty)
Next c
Cancel = True
End Sub

@+
 

Staple1600

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Re , bonjour Pierrot93


edit: trop rapide, Pierrot93, pas le temps de rafraîchir

Avec cette variante , c'est déjà mieux
edit2: En fait le mieux c'est la réponse de Pierrot93, j'ai édité ma réponse.

edit3: --> Pierrot93

Est-ce qu'on peut utiliser cette syntaxe?

Je ne suis pas sur pour les guillemets finaux (ou vbNullstring)
Code:
c = IIf(Not Intersect(c, Range("B3:CS369")) Is Nothing, _
IIf(IsEmpty(c.Value), 1, Empty), "")
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Re



Je poste dans le premier post

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Range
For Each c In Target
If Not Intersect(c, Range("B3:CS369")) Is Nothing Then
c = IIf(IsEmpty(c.Value), 1, Empty)
End If
Next c
MsgBox (Target.Rows.Count * 15) / 60
Cancel = True
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : inscrire "1" par un clic droit sur une selection de plusieurs cellules

Bonjour Pascal, Staple

@Staple
pour répondre à ta question d'hier 18h31, je dirais oui, peut être comme ceci :

Code:
Dim c As Range
For Each c In Target
    c.Value = IIf(Not Intersect(c, Range("B3:CS369")) Is Nothing, IIf(IsEmpty(c.Value), 1, Empty), "hors zone")
Next c

bon dimanche
@+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87