Sélection d'une ligne entière = condition d'exécution d'une macro

RO204B

XLDnaute Nouveau
Bonjour,
C'est sûrement basique mais, éternel débutant, je n'arrive pas à écrire en VBA cette chose aussi simple :
Si la sélection n'est pas une ligne entière, alors
MsgBox "Sélection non valide : sélectionner une ligne entière."
La sélection d'une ligne entière est la condition nécessaire pour la bonne exécution d'une macro.
Merci à qui voudra bien me répondre.
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Pour transformer une expression Range ne représentant pas une ligne entière en une qui en représente une il suffit, s'il s'agit d'une variable appelée Target par exemple, de faire Set Target = Target.EntireRow
 

RO204B

XLDnaute Nouveau
Merci Dranreb.
D'abord merci pour votre réponse.
Voulant faire court, je n'ai sans doute pas été assez explicite. Si ce n'est pas abuser, j'essaie d'être plus précis.
J'ai une macro qui a pour fonction, entre autres, d'insérer une ligne entière au même endroit (aléatoire) dans plusieurs feuilles en même temps. Mais comme je suis très distrait, je peux avoir oublié de sélectionner une ligne entière (quelconque) préalablement à l'exécution de la macro en sorte que ma commande Selection.Insert Shift:=xlDown aboutit à l'insertion d'une seule cellule, qui plus est à un endroit non désiré !...
Ce que je souhaite par conséquent, c'est que si la sélection (fortuite) est une cellule quelconque ou une plage quelconque de cellules au lieu d'une ligne entière, la macro ne s'exécute pas et que j'en sois informé par une MsgBox (la MsgBox, quand même, je sais faire !) Avec mes excuses et mes remerciements.
Cordialement
 

Dranreb

XLDnaute Barbatruc
Eh bien si vous tenez à empêcher l'exécution vous n'avez qu'à vérifier si l'adresse de la sélection est égale à l'adresse de la ligne entière de la première cellule de la sélection tout simplement.
Mais je trouve que ce n'est pas souple.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le film, le forum

Macro à vocation illustrative
(l'emploi de EntireRow dans ton code VBA devrait suffire à faire ce que tu souhaites)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.EntireRow.Select
MsgBox Selection.Address
End Sub
 

job75

XLDnaute Barbatruc
Bonjour RO204B, Bernard, JM,

Beaucoup de gens utilisent les MsgBox pour un oui ou pour un non.

Très souvent elles sont inutiles et agaçantes, c'est le cas pour ce problème, il suffit de commencer la macro ainsi :
Code:
Sub Macro1()
ActiveCell.EntireRow.Insert
'---suite du code---
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 779
Membres
101 816
dernier inscrit
Jfrcs