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

Selection.Row et Selection.Rows.Count

2 réponses
Avatar
David
Bonjour à toutes et à tous,

Dans une macro dans Excel pour expédier à plusieurs adresses e-mail
je sélectionne dans la feuille active plusieurs cellules avec les dites
adresses comme
ceci :

For Each cell In ActiveSheet _
.Range("B" & LigneDebut & ":B" &
LigneFin).Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" Then
strto = strto & cell.Value & ";"
cell.Font.ColorIndex = 3 '10 vert
cell.Interior.ColorIndex = 44
End If
Next cell

après avoir déterminé par le code le début et la fin de la sélection:

LigneDebut = Selection.Row
LigneFin = LigneDebut + Selection.Rows.Count - 1

et le résultat est d'abord affiché dans un MsgBox

Reponse = MsgBox("Expédition des cellules " & LigneDebut & " à " & LigneFin
& Chr(13) & Chr(10) & "de la feuille " & ActiveSheet.Name, vbDefaultButton2
+ vbInformation + vbOKCancel, "Attention")

Le résultat est toujours correcte sauf dans un cas et c'est justement ma
question :

Lorsque je ne sélectionne d'une seule cellule, la sélection faire par la
macro
s'étend à toute la colonne !

Cela me déroute car je suis habitué en visual basic 6 de faire
for i = 1 to 1
et le résultat attendu est le bon.

Mais que faut-il modifier dans mon code macro pour avoir le résultat
que je souhaite aussi bien quand je sélectionne une cellule ou
plusieurs ?

Merci d'avance pour vos réponses.
--
a+ Jean-Pol DAVID
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/

2 réponses

Avatar
Philippe.R
Bonjour,
Essaies en modifiant cette ligne : LigneFin = LigneDebut +
Selection.Rows.Count - 1
ainsi :
LigneFin = LigneDebut + Selection.Rows.Count -
iif(selection.rows.count>1,1,0)
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"David" a écrit dans le message de
news:
Bonjour à toutes et à tous,

Dans une macro dans Excel pour expédier à plusieurs adresses e-mail
je sélectionne dans la feuille active plusieurs cellules avec les dites
adresses comme
ceci :

For Each cell In ActiveSheet _
.Range("B" & LigneDebut & ":B" &
LigneFin).Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" Then
strto = strto & cell.Value & ";"
cell.Font.ColorIndex = 3 '10 vert
cell.Interior.ColorIndex = 44
End If
Next cell

après avoir déterminé par le code le début et la fin de la sélection:

LigneDebut = Selection.Row
LigneFin = LigneDebut + Selection.Rows.Count - 1

et le résultat est d'abord affiché dans un MsgBox

Reponse = MsgBox("Expédition des cellules " & LigneDebut & " à " &
LigneFin
& Chr(13) & Chr(10) & "de la feuille " & ActiveSheet.Name,
vbDefaultButton2
+ vbInformation + vbOKCancel, "Attention")

Le résultat est toujours correcte sauf dans un cas et c'est justement ma
question :

Lorsque je ne sélectionne d'une seule cellule, la sélection faire par la
macro
s'étend à toute la colonne !

Cela me déroute car je suis habitué en visual basic 6 de faire
for i = 1 to 1
et le résultat attendu est le bon.

Mais que faut-il modifier dans mon code macro pour avoir le résultat
que je souhaite aussi bien quand je sélectionne une cellule ou
plusieurs ?

Merci d'avance pour vos réponses.
--
a+ Jean-Pol DAVID
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/







Avatar
David
Bonjour Philippe,

Merci beaucoup pour votre réponse.
Je me suis servi de votre style de programmation pour
arriver au résultat recherché.
Je ne pense jamais à utiliser la fonction Iff,
et alors surtout pas dans la 2eme partie d'une opération.
Donc, en utilisant votre proposition que j'ai modifié comme suit
le résultat est bon, même si c'est complètement illogique
puisque si un seule adresse e-mail est bien prise en
compte comme je le voulais, le programme affichage
qu'il va utiliser par exemple les cellules 3 à 2 (absurde n'est-il pas !).
Mais enfin seul le résultat compte.

IIf(Selection.Row = Selection.Rows.Count, 1, 2)

Encore merci pour votre réponse qui m'a permis de progresser.

--
a+ Jean-Pol DAVID
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour,
Essaies en modifiant cette ligne : LigneFin = LigneDebut +
Selection.Rows.Count - 1
ainsi :
LigneFin = LigneDebut + Selection.Rows.Count -
iif(selection.rows.count>1,1,0)
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"David" a écrit dans le message de
news:
Bonjour à toutes et à tous,

Dans une macro dans Excel pour expédier à plusieurs adresses e-mail
je sélectionne dans la feuille active plusieurs cellules avec les dites
adresses comme
ceci :

For Each cell In ActiveSheet _
.Range("B" & LigneDebut & ":B" &
LigneFin).Cells.SpecialCells(xlCellTypeConstants)
If cell.Value Like "?*@?*.?*" Then
strto = strto & cell.Value & ";"
cell.Font.ColorIndex = 3 '10 vert
cell.Interior.ColorIndex = 44
End If
Next cell

après avoir déterminé par le code le début et la fin de la sélection:

LigneDebut = Selection.Row
LigneFin = LigneDebut + Selection.Rows.Count - 1

et le résultat est d'abord affiché dans un MsgBox

Reponse = MsgBox("Expédition des cellules " & LigneDebut & " à " &
LigneFin
& Chr(13) & Chr(10) & "de la feuille " & ActiveSheet.Name,
vbDefaultButton2
+ vbInformation + vbOKCancel, "Attention")

Le résultat est toujours correcte sauf dans un cas et c'est justement ma
question :

Lorsque je ne sélectionne d'une seule cellule, la sélection faire par la
macro
s'étend à toute la colonne !

Cela me déroute car je suis habitué en visual basic 6 de faire
for i = 1 to 1
et le résultat attendu est le bon.

Mais que faut-il modifier dans mon code macro pour avoir le résultat
que je souhaite aussi bien quand je sélectionne une cellule ou
plusieurs ?

Merci d'avance pour vos réponses.
--
a+ Jean-Pol DAVID
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/