Bonjour à tous,

Tout d'abord je tiens à préciser que je suis débutant en Vba.

J'ai une question concernant une macro que j'ai crée. Le but de celle-ci est d'inviter l'utilisateur à sélectionner une plage de cellules et de copier cette plage de cellules dans une nouvelle feuille de calcul.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub SelectionCellules()
 
    'Sélection de la plage de cellules par l'utilisateur
    Dim maPlage As Range
    On Error Resume Next
    Set maPlage = Application.InputBox("Sélectionnez la plage de cellule à importer sous format doc ", Type:=8)
    On Error GoTo 0
    If maPlage Is Nothing Then MsgBox "Sélection annulée"
 
    ' On copie la sélection
    Range(maPlage.Address).Copy
 
    ' Création d'une feuille de calcul temporaire
    Dim NouvelleFeuille As Worksheet
    Set NouvelleFeuille = ThisWorkbook.Worksheets.Add(before:=ThisWorkbook.Worksheets(1))
    Worksheets(1).Name = "FeuilleTest"
 
    'On colle la sélection dans la feuille  de calcul temporaire
    Sheets("FeuilleTest").Activate
    Rows("1:1").Select
    Selection.PasteSpecial Paste:=xlPasteAll
 
    Application.CutCopyMode = xlCopy
 
End Sub
Après plusieurs essais, je me suis aperçu que cette routine fonctionne correctement, uniquement quand l'utilisateur, lance la macro depuis la feuille dans laquelle les cellules à copier sont situées.

Je vous donne un exemple pour être sur d'être clair:

Imaginons que je veuille, sélectionner les cellules A1:G26, dans la feuille "Feuil3".
Si je lance la macro (Alt+F8) alors que je suis déjà dans la feuille "Feuil3", cela fonctionne.

En revanche, si je lance la macro depuis la feuille "Feuil2", les cellules copiées seront les cellules A1:G26 de la feuille "Feuil2" même si lorsque l'inputbox est lancée, l'utilisateur a bien sélectionné les cellules A1:G26 de la "Feuil3".

Comment dois-je m'y prendre pour que cette routine fonctionne quelque soit la feuille depuis laquelle elle est lancée.

Merci d'avance pour le temps que vous voudrez bien prendre pour traiter ma demande.

Cire190