[VBA] Déclarer variable "feuille"

Bonjour à tous,

Je souhaiterais déclarer dans 2 variables

  • L'onglet actif
  • l'onglet juste après celui qui est actif.

J'ai déclaré ça comme ceci:

Dim Feuille_N As Sheets
Dim Feuille_N1 As Sheets

    Feuille_N = ActiveSheet
    Feuille_N1 = ActiveSheet.Next

mais quand la macro se lance, arrivé à la troisième ligne, j'ai une erreur de type:

"Erreur de compilation:

Utilisation incorrecte de propriété"

c'est surement une grosse erreur, mais étant novice je ne la vois pas

merci d'avance pour vos réponses

Bonjour,

tu n'as pas besoin de déclarer la feuille active en variable.

Pour passer à la feuille suivante :

ActiveSheet.Next.Select

Pour revenir à la précédente :

ActiveSheet.Previous.Select

en fait c'est juste pour m'y retrouver plus facilement dans ma macro, mais c'est vrai que logiquement il n'y a pas besoin de déclarer des choses aussi simples.

en fait j'ai résolu le problème, j'ai trouver un truc qui s'en rapproche sur un site anglais.

Dim Feuille_N As Worksheet
Dim Feuille_N1 As Worksheet

   Set Feuille_N = ActiveSheet
   Set Feuille_N1 = ActiveSheet.Next

il fallait Worksheet et non Sheet.

et surtout il fallait l'argument "Set" avant.

problème, je ne connais pas trop ce fameux "SET", des fois ça marche sans, des fois il le faut.

A oui j'avais pas vu la déclaration de variable "Dim"

Par contre je suis toujours pas convaincu de l'utilité de leur déclaration en variable ?

bonjour,

J'appelle ce genre de codage du codage flou : En fait on ne sait jamais de quoi on parle. Quand on cherche l'erreur YAPUKA tout recoder.

Personnellement j'encourage vivement à éviter tous les ActiveQuelquechose (Window, Workbook, Sheet, Cell) au même titre que les Select, Activate et autre Fusion qui conduisent tôt ou tard à des problèmes. Il en va de même pour Next puisque l'index est éminemment instable et peut être modifié involontairement...

Pourquoi et comment déclarer des variables Worksheets ou Workbook ?

Essentiellement quand on travaille simultanément sur plusieurs Feuilles ou Classeurs et quand on veut éviter d'avoir à répéter à tout bout de champs Workbooks("MonBeauSapin").Worksheets("DuboDubonDubonnet") ...

On écrit directement

Set Source = Workbooks("MonBeauSapin") .Worksheets("DuboDubonDubonnet")
Set Cible = ThisWorkbook.Worksheets("Récap")

puis :

Source.Cells.copy Cible.Range("A1")

et tu peux faire ça à partir de n'importe ou sans avoir rien à activer...

A cette occasion on évite de choisir des noms flou ou androgyne

WbS convient très bien pour un Classeur Source

WsS... pour une Feuille Source

WbC... pour le classeur Cible

WsC... pour le feuille Cible

Tout le monde y gagne en compréhension et on n'a pas à se taper une ligne de variables capilotractées à chaque fois...

A+

alors effectivement étant novice je n'ai pas ce degrés d'organisation dans VBA

je comprends effectivement l’intérêt de procéder comme ça,

Mais est-ce adaptable à mon cas?

et pour répondre à Wmenpl.

je souhaite les mettre en variable car c'est une macro qui sera lancée depuis un bouton sur une feuille,

et la feuille en question sera copiée puis collée, et la macro (déclenchée par le bouton) fera une comparaison entre la Feuille active et la suivante

mais cela ne veut pas dire que ce sera la feuille sheet(1) et sheet(2), elles pourront se trouver en position (4) et (5), et leur nom ... trop variable...

seule chose que je sais c'est qu'elle seront toujours à la suite et que l’opération se fait de la feuille active vers la feuille suivante.

d'ou mon idée d'avoir une macro avec comme référence Activesheet et Activesheet.next

mais je suis novice, j'imagine qu'il y a des solutions beaucoup plus "protocolaire" et efficace !

Rechercher des sujets similaires à "vba declarer variable feuille"