Bonjour à tous,
Je débute sur VBA et je n'ai pas trouvé de problème identique sur ce forum (A priori)
J'ai pour but de coder la fonction "unique".
Je cherche à faire une fonction "Recopie" de façon universelle qui recopie une plage dans une autre, en débutant dans la recopie dans la plage sous la cellule appellante. J'ai un problème avec la fonction Copy de VBA.
J'ai essayé 3 façons :
1) recopie à la mano avec un for each : marche, mais c'est moche et "pas efficace"
2) recopie la plage (variable) grâce à la fonction copy : ne marche pas
3) recopie la plage (entrée manuellement) grâce à la fonction copy : ne marche tjs pas
Ce qui me bute, c'est que dans une procédure "Sub" les 3 techniques marchent... Je reste quoi. Des explications? Soyez Constructif svp ! :-)
Si jamais vous voyez le problème, pourriez-vous m'indiquer comment corriger mon code (version 2). ) svp ?
Voici le code :
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
26
27
28
29
30
31
32 ' Recopie une plage (titre dans la case d'appel puis les valeur) à partir de la case qui appelle la fonction Function Recopie3(plage As Range) As String ' Variables Dim cellule As Range Dim ligneCaller As Integer Dim colonneCaller As Integer Dim i As Integer: i = 1 ' Corps de la fonction Set cellule = Application.Caller ligneCaller = cellule.Row colonneCaller = cellule.Column ' Version Disgrâcieuse qui marche For Each cellule In plage 'MsgBox (" i = " & i & " valeur du résultat " & cellule.Value) Cells(ligneCaller + i, colonneCaller).Value = cellule.Value i = i + 1 Next cellule ' Détail Recopie3 = "Titre" ' Problème et qui n'effectue pas le taff plage.Copy Range("H15") MsgBox ("Clean") ' Code qui ne marche pas non plus... Range("A8:B11").Copy Range("I15") End Function
Partager