Macro avec références numéros des feuilles

Usine à gaz

XLDnaute Barbatruc
Bonjour à tous et très bon dimanche,

j'aimerai pouvoir utiliser les numéros des feuilles comme références dans mes macros afin de ne pas avoir à les modifier en cas de changement de nom.

Exemple :

If Sheets("OF1").Range("C1") = Sheets("CAL").Range("E1").Value Then
Sheets("CAL").Select
End If

deviendrait : (dans mon classeur, OFI correspond à "Feuil37" et CAL à "Feuil13")

If Sheets("Feuil37").Range("C1") = Sheets("Feuil13").Range("E1").Value Then
Sheets("Feuil13").Select
End If

j'essaie mais ça ne marche pas et je ne vois pas où est l'erreur,

Pourriez-vous m'éclairer ?
Merci d'avance,
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Bonjour Sourcier,

Merci pour ton observation mais les feuilles cachées s'affichent bien avant le traitement de chaque macro, à moins que j'en ai oublié. je vérifie
Cordialement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Re et à tous,

Je ne comprends plus rien car je viens de le refaire et maintenant ça marche !
Pourtant, je n'y ai pas apporté de modification .... c'est un mystère ?

Est-il possible qu'une macro qui plante se mette à marcher après quelques essais ?

En tous cas, ne cherchez plus pour rien et j'en suis désolé.
Un grand merci à vous,
Amicalement,
Lionel,
 

Papou-net

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Salut à tous,

À mon avis le problème vient de feuilles qu'il veut sélectionner sans les afficher (feuilles masquées).
Il faudrait peut-être revoir le code afin d'afficher les feuilles avant de les "sélectionner".

Sheets(Feuil2).visible = true
Sheets(Feuil2).select

RE :

Salut Sourcier08,

C'est possible, mais je rappelle : pas d'erreur chez moi. Et comme on manque de précisions sur l'origine et la teneur du message d'erreur, pas facile d'aller plus loin.

Cordialement.
 

Usine à gaz

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Re à vous deux et à tous,
Vraiment vous êtes super.
ça marche maintenant et je ne sais pas pourquoi ça ne marchait pas.
Encore merci de vos actions et gentillesse,
Cordialement,
Lionel,
 

sourcier08

XLDnaute Occasionnel
Re : Macro avec références numéros des feuilles

C'est possible, mais je rappelle : pas d'erreur chez moi. Et comme on manque de précisions sur l'origine et la teneur du message d'erreur, pas facile d'aller plus loin.

J'aimerai vraiment savoir ce qui cloche (ou ce qui a cloché) dans son fichier.
Chez moi, il a bloqué sur Sheet("Feuil2").select

erreur d'exécution 9 : L'indice n'appartient pas à la sélection.
Et maintenant, comme toi, ça va bien. À n'y rien comprendre.
 

Usine à gaz

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Bonsoir Sourcier08,
Bonsoir à tous,

Je connais cette erreur 9 et je peux l'expliquer :
voire photo jointe
Erreur 9.jpg

En fait, quand je lance la macro "Recap", excel me créé deux feuilles.
une feuil1 et une feuil2
lJ'utilise le nom de ces feuilles dans mes macros.

La première fois que je lance la macro, ça marche car excel créé tjrs en premier les feuilles 1, 2 etc...
Mais pour refaire la macro une seconde fois ou plus, il faut fermer le fichier et le réouvrir.

Ce qui m'amène à une question que je souhaitais poser :

J'aimerai contourner ce désagrément de fermer et de réouvrir à chaque fois mon classeur quand je veux lancer ma macro.

- Est-il possible de forcer excel à créer tjrs feuill1 et feuil2 quand je lance ma macro ?
- ou comment dire à excel dans mes macros que c'est ces feuilles qu'il va ouvrir que je veux utiliser et renommer ?

Merci à tous,
Amicalement,
Lionel,
 

Papou-net

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

J'aimerai contourner ce désagrément de fermer et de réouvrir à chaque fois mon classeur quand je veux lancer ma macro.

- Est-il possible de forcer excel à créer tjrs feuill1 et feuil2 quand je lance ma macro ?
- ou comment dire à excel dans mes macros que c'est ces feuilles qu'il va ouvrir que je veux utiliser et renommer ?

RE :

Le plus sûr, lorsque tu crées des feuilles par macro, est de toujours les renommer dans la foulée. Tu n'as pas besoin de connaître le nom que leur donne Excel, il suffit de les désigner par ActiveSheet, puisqu'une feuille créée est automatiquement activée.

Ex :

Code:
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = ActiveSheet.CodeName
Dans cet exemple, le nom de la feuille est identique à son codename, ce qui permet d'éviter d'éventuels doublons. Mais tu peux tout aussi bien donner un nom prédéfini (entre guillemets) ou lui affecter la valeur d'une variable ou d'une cellule.

Cordialement.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Macro avec références numéros des feuilles

Bonsoir le Fil, le Forum

Par habitude quand je travaille avec des Feuilles j'en fais un Objet directement... Que je mets en Variables Public si nécessaire...

VB:
Option Explicit
Sub CreateWorsheet()
Dim WB As Workbook, WSNew As Worksheet

Set WB = ThisWorkbook
With WB
Set WSNew = .Worksheets.Add
End With


With WSNew
MsgBox "Je Suis La Nouvelle Feuille:" & vbCrLf & _
"My Name = " & .Name & vbCrLf & _
"My CodeName = " & .CodeName & vbCrLf & _
"My Index Number = " & .Index

.Range("A1") = "Hello World!"
End With

End Sub

Après je fais ce que je veux de mon Objet WorkSheet "WSNew"... Sans avoir à faire appel à autre chose que mon Objet "WSNew", mais le VBA est muni d'une multitude de chemins pour aller à Rome !

Bonne nuit
@+Thierry
 

Usine à gaz

XLDnaute Barbatruc
Re : Macro avec références numéros des feuilles

Bonjour Thierry,
Bonjour à tous,

Merci pour ton code ... il a l'air super mais, nul en VBA, je ne le comprends pas LOL.

Si tu veux bien me l'expliquer (le mets-on dans le module général ? comment il fonctionne ?)
Merci d'avance,

Amicalement,
Lionel,
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Macro avec références numéros des feuilles

Bonjour le Fil, Bonjour arthour973

On peut mettre la Sub n'importe où, même dans un Private Module de UserForm.
Ce qui est important c'est de savoir la Portée" voulue de la Variable OBject "WSNew".

Si on fait la Déclaration de cette Variable dans un Module Standard en TOP de celui ci (dans aucune Macro)
Public WSNew As Worksheet

WSNew une fois initialisée (quand on fait un Set dans une Sub aiileurs) sera accessible dans tout ton Projet à tout moment.


Si comme dans mon exemple c'est une Décla&ration "Dim" au coeur de la Sub, la Portée et durée de Vie de cette variable ne sera que pendant l'exécution de la dite Sub à partir du Set...

Bon Courage
@+Thierry
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
362

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko