pb av changement de feuilles dans macro

  • Initiateur de la discussion Initiateur de la discussion TOM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

TOM

Guest
Bonjour le forum,

je travaille sur un petit programme de réservation de courts de tennis et de prises d'abonnement et je me pose une question.
Mon classeur comprend 8 feuilles : 1 pour la base de données et 1 pour chaque jour de la semaine (elles sont identiques).

J'ai les mêmes macro sur chaque feuille et le problème c'est que ma macro fait sélectionner la feuille de base de donnée puis doit revenir sur la feuille d'origine.
En fait quand je suis dans mercredi par ex elle va dans bd puis doit revenir dans mercredi (sans que je passe par Sheets('mercredi').Select) mais je ne sais pas comment faire.

Donc ma question est est-ce qu'il existe un code qui fasse revenir mon action dans la feuille d'origine ?
Cela m'éviterai de devoir refaire 7 fois la même chose.

Merci pour les réponses.

TOM
 
Bonjour TOM,

Je suis encore bien loin d'être un pro du vba, je suis juste initié, et c'est peut-être pour cela que je n'ai pas compris ta configuration...

Par exemple, lorsque tu dis que tu as les mêmes macro sur chaque feuille, je me demande pourquoi il n'y a pas une macro unique qui conserverai la notion de feuille active.

Peut-être que si tu décrivait davantage tes macros, ce serait plus clair.

A plus.
 
Et ceci

Sub toto()
Dim jour
jour = Weekday(Date)
Select Case jour
Case 1
joursem = 'Dimanche'
Case 2
joursem = 'Lundi'

...

Case 6
joursem = 'Vendredi'
End Select

Sheets('' & joursem).Select


End Sub
 
Bonjour JCA06,

En fait je suis relativement débutant moi aussi.
Ce qui ce passe c'est que je fait une copie de ma première feuille qui est lundi.
Donc mes autres feuilles ont les mêmes boutons de commande qui lance les mêmes macros.
Par exemple, dans lundi un des boutons lance une macro qui écrit des données dans la feuille BD donc là il n'y a pas de pb mais ensuite la macro prend une des infos de BD pour la mettre dans la feuille d'origine qui est lundi.
Comme c'est la même chose pour chaque feuille, je ne sais pas comment faire.
Peut être qu'effectivement avec une feuille active ce serai possible mais je ne connait pas franchement comment ça marche.

Donc si tu peut m'éclairer

Merci.

TOM
 
Bonjour Yeahou, Tcho !,JCA06

Voici une partie de mon code :

Sheets('BD').Select
Range('C2').FormulaR1C1 = '=CONCATENATE(RC[-2],'' '',''/'','' '',RC[-1])'

Range('A2').Select
Selection.Copy
Sheets('Lundi').Select
Range('T8').Select
Selection.Insert Shift:=xlDown
Range('T8:T100').Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range('T8'), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Sheets('BD').Select
Rows('2:2').Select
Selection.Cut
Rows('500:500').Select
ActiveSheet.Paste
Range('A10:AL500').Select
Range('A500').Activate
Selection.Sort Key1:=Range('A10'), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Sheets('Lundi').Select
Range('E48').Select
ActiveCell.FormulaR1C1 = '=COUNTA(R[-40]C[15]:R[70]C[15])'
Range('E47').Select
ActiveCell.FormulaR1C1 = '=COUNTA(R[-39]C[17]:R[71]C[17])'
Range('A1').Select
bail_abnt.Hide
 
En tout cas, tu vois que tu ne t'es pas trompé d'adresse !

De ce que je crois comprendre, ma piste est peut-être un bon début, à savoir que si tu gardes le nom de la feuille active dans une variable définie dans le code associé au bouton, tu garderas le chemin du retour.

Comme le dit Yeahou, cela aiderait si tu nous copiait ton code, ou encore mieux si tu joignait ton fichier.

A plus.
 
Re bonjour

modif à la volée, devrait fonctionner quelque soit la feuille qui appelle la macro

Cordialement, A+

with Sheets( BD )
.Range( C2 ).FormulaR1C1 = =CONCATENATE(RC[-2], , / , ,RC[-1])
.Range( A2 ).Copy
end with

Range( T8 ).Insert Shift:=xlDown
Range( T8:T100 ).Sort Key1:=Range( T8 ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

with Sheets( BD )
.Rows( 2:2 ).Cut
.Rows( 500:500 ).Paste
.Range( A10:AL500 ).Sort Key1:=Range( A10 ), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
end with

Range( E48 ).FormulaR1C1 = =COUNTA(R[-40]C[15]:R[70]C[15])
Range( E47 ).FormulaR1C1 = =COUNTA(R[-39]C[17]:R[71]C[17])
Range( A1 ).Select
bail_abnt.Hide
 
Rebonjour,

D'après ce que j'ai compris, je dois inscrire Activesheet au lieu de lundi, mardi... dans mon code, n'est-ce pas ?

En tout cas merci pour votre aide, je vais essayer plusieures choses.

A +
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
5
Affichages
244
Didierpasdoué
D
Réponses
1
Affichages
208
Retour