comment raccourcir un code vba

Le
Emile63
Bonjour Í  tous,

J'ai actuellement les instructions suivantes dans une procédure VBA :

[MonInsertion].Select
[B3].Activate

Et je souhaiterais savoir si je peux raccourcir l'instruction en une seule ligne:

[MonInsertion].[B3].Activate (NB: ainsi rédigée, ne fonctionne pas)

Je vous remercie d'avance pour vos suggestions, et vous souhaite une bonne journée Í  tous.
Emile
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
MichD
Le #26566931
Le 03/02/21 Í  05:36, Emile63 a écrit :
Bonjour Í  tous,
J'ai actuellement les instructions suivantes dans une procédure VBA :
[MonInsertion].Select
[B3].Activate
Et je souhaiterais savoir si je peux raccourcir l'instruction en une seule ligne:
[MonInsertion].[B3].Activate (NB: ainsi rédigée, ne fonctionne pas)
Je vous remercie d'avance pour vos suggestions, et vous souhaite une bonne journée Í  tous.
Emile


Bonjour,
Qu'est-ce que tu veux insérer? Une image, une ligne ou colonne de la
feuille de calcul...etc? Que veux-tu faire avec cette "Insertion"?
MichD
MichD
Le #26566932
2 Exemples de code : Mettre une couleur de fond dans une cellule autre
que la feuille active.
Méthode I
Worksheets("NomDeLaFeuille").Select
Cells(5,6).select
Selection.interior.color = vbred
Worksheets("FeuileInitiale").select
Méthode II
With Worksheets("NomDeLaFeuille")
.Cells(5,6).Interior.color = vbred
Endd With
Les 2 méthodes ont le même nombre de lignes, mais la procédure 2 est
plus efficace. De plus lorsque tu as une longue procédure avec plein de
"Select" ou "Activate". C'est beaucoup plus difficile de lire le code et
de comprendre ce qu'il fait.
Il se peut que l'on ait besoin de l'expression "Select", mais c'est
plutÍ´t l'exception que la norme. En utilisant la syntaxe de la procédure
2, on peut utiliser ce code dans un module standard ou feuille sans
aucun problème.
Il ne faut pas être obsédé par le nombre de lignes, mais plutÍ´t par son
efficacité et la facilité avec laquelle on peut relire le code plusieurs
mois plus tard pour ajouter ou soustraire des opérations, le cas échéant.
MichD
MichD
Le #26566941
Le 03/02/21 Í  05:36, Emile63 a écrit :
Bonjour Í  tous,
J'ai actuellement les instructions suivantes dans une procédure VBA :
[MonInsertion].Select
[B3].Activate
Et je souhaiterais savoir si je peux raccourcir l'instruction en une seule ligne:
[MonInsertion].[B3].Activate (NB: ainsi rédigée, ne fonctionne pas)
Je vous remercie d'avance pour vos suggestions, et vous souhaite une bonne journée Í  tous.
Emile


Un petit exemple de code.
Suppose que la feuille active du classeur est la feuil1 et que tu
veuilles insérer un "ContrÍ´le image" dans lequel tu vas afficher une
image de ton choix.
A ) tu n'as pas eu Í  sélectionner la feuil2,
B ) tu as défini o͹ l'image devrait s'afficher en Feuil2 .Range("C2:g7")
C ) Ceci s'est produit pendant que la feuil1 est demeurée active pendant
l'exécution et la cellule active n'a pas changé.
P.S- Pour sélectionner une cellule d'une feuille, cette dernière doit
être la feuille active. Le "Select" fonctionne seulement sur des objets
ou cellules de la feuille active, celle Í  l'écran du classeur.
'--------------------------------------
Sub InsererControlEtImage()
Dim Img As Object
Dim A As Double, B As Double
Dim C As Double, D As Double
Dim X As MSForms.fmPictureSizeMode
X = fmPictureSizeModeStretch
With Worksheets("Feuil2")
With .Range("C2:g7")
A = .Top
B = .Height
C = .Width
D = .Left
End With
Set Img = Feuil2.OLEObjects.Add(ClassType:="Forms.Image.1", _
Link:úlse, DisplayAsIcon:úlse, Left:=D, _
Top:=A, Width:=C, Height:=B).Object
End With
With Img
.Picture = LoadPicture("C:UsersmichdDropboxImagesHumour.jpg")
.PictureSizeMode = X
End With
Set Img = Nothing: Set Rg = Nothing
End Sub
'--------------------------------------
MichD
Emile63
Le #26567355
Le Wednesday, February 3, 2021 Í  12:54:03 PM UTC+1, MichD a écrit :
2 Exemples de code : Mettre une couleur de fond dans une cellule autre
que la feuille active.
Méthode I
Worksheets("NomDeLaFeuille").Select
Cells(5,6).select
Selection.interior.color = vbred
Worksheets("FeuileInitiale").select
Méthode II
With Worksheets("NomDeLaFeuille")
.Cells(5,6).Interior.color = vbred
Endd With
Les 2 méthodes ont le même nombre de lignes, mais la procédure 2 est
plus efficace. De plus lorsque tu as une longue procédure avec plein de
"Select" ou "Activate". C'est beaucoup plus difficile de lire le code et
de comprendre ce qu'il fait.
Il se peut que l'on ait besoin de l'expression "Select", mais c'est
plutÍ´t l'exception que la norme. En utilisant la syntaxe de la procédure
2, on peut utiliser ce code dans un module standard ou feuille sans
aucun problème.
Il ne faut pas être obsédé par le nombre de lignes, mais plutÍ´t par son
efficacité et la facilité avec laquelle on peut relire le code plusieurs
mois plus tard pour ajouter ou soustraire des opérations, le cas échéant.
MichD

----------------------------------------------------------------------------------
Bonjour MichD,
Heureux de te lire. ;-)
[MonInsertion] est une zone nommée qui regroupe une dizaine de cellules contigͼes.
Dans la zone [MonInsertion] une fois sélectionnée, je souhaite que la cellule sélectionnée soit la [B3].
Je te remercie pour ton judicieux conseil (Méthode II), que j'ai appliqué pour résoudre mon souci :-)
Encore merci et très bonne journée.
Poster une réponse
Anonyme