Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

target de plusieurs cellules

3 réponses
Avatar
Céline
bonjour;
j'aimerais vous soumettre deux questions concernant la variable
Target...

J'execute certaines proc=E9dures =E0 partir de la proc=E9dure principale :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)

tout d'abord, j'en ai notamment une qui me permet de recopier dans les
cellules Ei la concat=E9nation de Ai & Bi.
Ca marche tr=E8s bien sauf dans le cas o=F9 l'utilisateur utilise la
fonction "glisser-recoppier" (je sais pas quel nom elle a mais en
s=E9lectionnant la cellule et en faisant glisser, le contenu de la
cellule est recopi=E9 su X-lignes (et incr=E9ment=E9). Bref, dans ce cas,
Ei reste vide...
y a-t-il un moyen de "forcer" le SheetChange ?

la seconde que j'utilise contient comme suit : (toujours dans
Workbook_SheetChange)
If Target =3D "" Then ThisWorkbook.BuiltinDocumentProperties.Item(5)
=3D ""
L'ennui c'est que si par exemple l'utilisateur efface plusieurs
cellules =E0 la fois, mon programme plante.

Y a-t-il un moyen d'=E9viter cela, ou est-ce que je suis oblig=E9e de
tester directement la ou les cellules dans le conenu pourrait
m'int=E9resser Range("A1:C1").text =3D "" m=EAme si c'est effectivement
A1:C1 qui ont =E9t=E9 effac=E9s. (idem dans le cas des cellules
fusionn=E9s)

Merci beaucoup par avance de votre aide....
C=E9line

3 réponses

Avatar
Michel Gaboly
Bonjour Céline

Parcours chaque cellule de Target dans une boucle :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Exce l.Range)
Dim c As Range
For Each c In Target
if c = "" then ...
Next
End Sub

ou pour accélérer le traitement et réduire le nombre de passages da ns la boucle, lorsque Target contient de nombreuses
cellules, et que seule une plage réduite t'intéresse :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Exce l.Range)
Dim c As Range
If Not Intersect(Target, Sh.Range("A1:C1")) Is Nothing Then
For Each c In Intersect(Target, Sh.Range("A1:C1"))
If c = "" Then ...
Next
End If
End Sub


bonjour;
j'aimerais vous soumettre deux questions concernant la variable
Target...

J'execute certaines procédures à partir de la procédure principal e :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)

tout d'abord, j'en ai notamment une qui me permet de recopier dans les
cellules Ei la concaténation de Ai & Bi.
Ca marche très bien sauf dans le cas où l'utilisateur utilise la
fonction "glisser-recoppier" (je sais pas quel nom elle a mais en
sélectionnant la cellule et en faisant glisser, le contenu de la
cellule est recopié su X-lignes (et incrémenté). Bref, dans ce ca s,
Ei reste vide...
y a-t-il un moyen de "forcer" le SheetChange ?

la seconde que j'utilise contient comme suit : (toujours dans
Workbook_SheetChange)
If Target = "" Then ThisWorkbook.BuiltinDocumentProperties.Item( 5)
= ""
L'ennui c'est que si par exemple l'utilisateur efface plusieurs
cellules à la fois, mon programme plante.

Y a-t-il un moyen d'éviter cela, ou est-ce que je suis obligée de
tester directement la ou les cellules dans le conenu pourrait
m'intéresser Range("A1:C1").text = "" même si c'est effectivement
A1:C1 qui ont été effacés. (idem dans le cas des cellules
fusionnés)

Merci beaucoup par avance de votre aide....
Céline




--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
Céline
bonjour Michel,
la réponse était évidente... :p je l'ai vu passer une foultitude de
fois sur le forum sans percuter....
Merci beaucoup de m'avoir ouvert les yeux, tu as donc résolu mes deux
problèmes à la fois !!!
bonne journée...
Céline
Avatar
Michel Gaboly
De rien, ;:))

Bonne journée à toi aussi.


bonjour Michel,
la réponse était évidente... :p je l'ai vu passer une foultitude de
fois sur le forum sans percuter....
Merci beaucoup de m'avoir ouvert les yeux, tu as donc résolu mes deux
problèmes à la fois !!!
bonne journée...
Céline




--
Cordialement,

Michel Gaboly
www.gaboly.com