Macro

L4460 Messages postés 1 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je souhaite coller un tableau type sur une cellule quelconque selectionnée par un clic de souris. N'ayant pas de connaissance en VBA, j'utilise l'enregistreur de macro. Quel sont les fonctions qui permettent d'afficher une notification et de récupérer les références de la cellule activée par la suite?

Voici le code que je souhaite compléter:

Sub Macro5()
'
' Macro5 Macro
'
Range("A1:L4").Select
Selection.Copy

AFFICHER LE MESSAGE "selectionner une cellule" JUSQU'AU CLIC DANS UNE CELLULE.
LA CELLULE SELECTIONNEE EST LE POINT D'INSERTION DU TABLEAU (A1L4)

Range(" ").Select
ActiveSheet.Paste
End Sub

Merci de votre aide
A voir également:

1 réponse

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
Bonjour,

Réponse tardive, mais bon...

Sub Macro5()   
Dim Cel As Range   
'SELECTION DE LA CELLULE OU COLLER LES DONNEES :   
Do   
    On Error Resume Next   
    Set Cel = Application.InputBox("La cellule sélectionnée est le point d'insertion du tableau", "Sélectionnez une cellule !", Type:=8)   

'On affiche l'inputbox tant que l'on n'a pas une adresse de range valide :   
Loop While Err = 424 Or Cel.Count <> 1 Or Not Intersect(Range("A1:L4"), Cel)
Range("A1:L4").Copy Cel   
Set Cel = Nothing   
End Sub

Cette ligne :
Loop While Err = 424 Or Cel.Count <> 1 Or Not Intersect(Range("A1:L4"), Cel)
prends en compte les différents critères qui réaffichent l'inputBox, à savoir :
- si erreur 424 = Clic sur le bouton annuler de la box (Err = 424)
- si l'utilisateur sélectionne plusieurs cellules (Cel.Count <>1)
- si l'utilisateur choisit une cellule à l'intérieur de A1:L4 (Not Intersect(Range("A1:L4"), Cel))
Dans ces trois cas, le copié-collé ne se fait pas ET la boite de dialogue avec l'utilisateur reste apparente...

Pour laisser la possibilité d'annuler :
Dim Cel As Range   

Do   
    On Error Resume Next   
    Set Cel = Application.InputBox("La cellule sélectionnée est le point d'insertion du tableau", "Sélectionnez une cellule !", Type:=8) 

Loop While Cel.Count <> 1 Or Not Intersect(Range("A1:L4"), Cel)   
Range("A1:L4").Copy Cel   
Set Cel = Nothing

Cordialement,
Franck P
0