Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

variable

3 réponses
Avatar
domicol
Bonjour,
j ai fais une macro vba

If resultat <> "" Then
ActiveSheet.Shapes("image11").Select
Selection.Copy
Sheets("feuille").Select
Range("A10").Select
-----je voudrai remplacer "A10" par la variable "ref"------

'Sheets("feuille").Select.ref
ActiveSheet.Paste
Selection.ShapeRange.IncrementLeft left
--------left est une variable------------

Selection.ShapeRange.IncrementTop top
---------top est une variable------------
Selection.Name = "Image 100"
Range("M9")Select
End If

la macro ne marche pas comme je voudrai ,je n arrive pas à faire marcher la macro ,quand je remplace "A10"par la variable "ref" de même pour les variable "left "et "top"

merci

3 réponses

Avatar
Geo
Bonjour
Vous ne dites pas ce que sont les variables ref, left et top.
Pour avoir la même chose, il faudrait écrire
dim ref as string
ref = "A10"
Range(ref).Select
Avatar
MichD
Bonjour,
Voici une procédure qui copie l'image de la "Feuil1" vers la "Feuil2"
Si tu utilises une variable, utilise un nom de variable qui n'est pas
présent dans le modèle objet VBA-Excel. À titre d'exemple, ton code
utilise une variable "Left" et "Top", 2 expressions réservées au langage
VBA.
Il est important de déclarer toutes les variables, c'est une bonne
habitude Í  prendre...
| "A10" par la variable "ref" : 2 façons de procéder
A ) utiliser une variable de type String
'Déclaration de la variable
dim Ref as String
'Renseigner la variable
Ref = "A10"
OU
Ref = range("A10").address
Pour utiliser la variable
x= Range(Ref).adddress
B ) utiliser un objet Range pour désigner une cellule
Déclaration de la variable objet
dim Rg As Range
'Renseigner la variable objet
'Lorsque l'on renseigne une variable objet, on doit utilisé "Set"
Set Rg = range("A10")
Plus loin dans ton code, Í  chaque fois que tu fais référence Í  la
cellule A10, tu utilises la variable Rg comme si c'était Range("A10")
x = Rg.address
'La procédure qui suit utilise 2 variables objet pour copier l'image
'de la feuille "Feuil1" vers la feuille "Feuil2". C'est un exemple de ce
qui est possible de faire...
'--------------------------------------------------
Sub test1()
Dim Sh As Shape, Rg As Range
Application.ScreenUpdating = False
'Avec la feuille o͹ est l'image
With Sheets("Feuil1") 'Nom Feuille Í  adapter
'Variable objet représentant la shape ("image11")
Set Sh = .Shapes("Rectangle 1")
'Variable objet représentant la cellule ou cellules
'o͹ est l'objet image
Set Rg = .Range(Sh.TopLeftCell.Address & ":" & _
Sh.BottomRightCell.Address)
End With
'Copy de l'image
Sh.Copy
''Avec la feuille o͹ est collé l'image
With Worksheets("Feuil2") 'Nom Feuille Í  adapter
'La cellule o͹ se retrouvera le coin supérieur
'gauche de l'image. Observe bien, l'image est de même
'dimension et et se retrouve exactement dans la position
'si tu compares avec la position de l'image de la feuille d'origine
'Tu peux choisir l'adresse de la cellule de ton choix
Rg.Copy .Range("G25")
.Paste .Range("G25")
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
'--------------------------------------------------
MichD
Avatar
MichD
Une autre manière de procéder pour copier une image d'une feuille Í 
l'autre et l'utilisation d'une fonction dont on peut appeler aussi
souvent que l'on désire. Voici un exemple Í  partir du code précédent :
'---------------------------------------------------------
Sub test()
'déclaration des variables
Dim FeuilSource As String
Dim FeuilDest As String
Dim NomShape As String
Dim Adr As String
'***********DÉCLARATION DES VARIABLES************
FeuilSource = "Feuil1"
FeuilDest = "Feuil2"
NomShape = "image11"
Adr = "G25" 'Adresse de la cellule feuille de destination
'************************************************
'Cette ligne de code appelle la fonction avec les
'paramètres (variables) définis.
Coller_Image FeuilSource, FeuilDest, NomShape, Adr
'Tu peux utiliser cette fonction aussi souvent que
'tu veux, il n'y a qu'Í  définir les paramètres(variables)
End Sub
'---------------------------------------------------------
Function Coller_Image(FeuilSource As String, _
FeuilDest As String, NomShape As String, _
Adr As String)
Dim Sh As Shape, Rg As Range
Application.ScreenUpdating = False
'Avec la feuille o͹ est l'image
With Sheets(FeuilSource) 'Nom Feuille Í  adapter
'Variable objet représentant la shape ("image11")
Set Sh = .Shapes(NomShape)
'Variable objet représentant la cellule ou cellules
'o͹ est l'objet image
Set Rg = .Range(Sh.TopLeftCell.Address & ":" & _
Sh.BottomRightCell.Address)
End With
'Copy de l'image
Sh.Copy
''Avec la feuille o͹ est collé l'image
With Worksheets(FeuilDest) 'Nom Feuille Í  adapter
'La cellule o͹ se retrouvera le coin supérieur
'gauche de l'image. Observe bien, l'image est de même
'dimension et et se retrouve exactement dans la position
'si tu compares avec la position de l'image de la feuille d'origine
'Tu peux choisir l'adresse de la cellule de ton choix
Rg.Copy .Range(Adr)
.Paste .Range(Adr)
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Function
'---------------------------------------------------------
MichD