Excel 2013 - VBA - activesheet par défaut

jeanne2413 -  
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,



Etant profane de VBA j'arrive sous Office 2003 à faire d'excellentes macro en recording.

Je dois en refaire sur Excel 2013 mais le langage par défaut est immonde.

Pour selectionner une cellule plutôt que de faire par défaut activesheet.range("a1").select il se positionne par rapport à la dernière cellule sélectionnée (ce qui devient horrible car je navigue entretemps dans le fichier) à travers activecell.offset.......

Ceci m'oblige à corriger manuellement tout code pour le transformer en activesheet.

Ca prend un temps risible et j'aimerais que par défaut, quand j'enregistre une macro, il utilise activesheet plutôt qu'activecell.offset. Savez vous comment faire s'il vous plait?

Merci d'avance.
A voir également:

3 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

macro en recording. Vous faites reference a l'enregistreur de macro ou ...?????

Vous pourriez montrer un exemple de la chose ??
0
jeane2413
 
Tout a fait en enregistrement. Je n écris pas directement le code. Je ne suis pas chez moi donc je ne pourrai pas vous donner d exemple d ici peu
0
jeanne2413
 
Donc typiquement pour sélectionner la cellule A1 par exemple, dans une feuille, VBA inscrit le code suivant quand je suis en recording (enregistrement probablement...)

ActiveCell.Offset(23, -3).Range("A1").Select

Sauf que ce code active une cellule qui se trouve à une distance de la cellule active. Dans ce cas 23 colonnes et -3 lignes de cellule active. Il suffit donc que dans la dernière navigation, avant de tourner la macro la dernière cellule sélectionnée est différente pour qu'il n'aille plus sur la cellule A1.

Le code correct serait:

ActiveSheet.Range("A1").Select.

J'aimerais demander à VBA, lorsque j'enrigstre une macro qu'il utilise ce code ActiveSheet par défaut plutôt qu'ActiveCell.Offset.

Les Macros sont trop longues et trop nombreuses pour que je modifie manuellement les ActiceCell.Offset en ActiveSheet.

Merci
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

ActiveCell.Offset(23, -3).Range("A1").Select

n'a pas ete ecrit par l'enregistreur de macro, c'est du code ecrit a la main.

A+
0