Selection.Row et Selection.Rows.Count

Le
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/
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #18251791
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" 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/







David
Le #18252571
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"
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" 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/










Publicité
Poster une réponse
Anonyme