Code VBA à adapter pour une page spécifique et non la page active

Bonjour,

J'ai un bout de code VBA qui est dans une macro et j'aimerais spécifier que cette action se produise uniquement sur la page Template au moment de lancer celle-ci (donc même si je lance la macro sur une autre page).

For i = 1 To Sheets.Count
        If Worksheets(i).Name <> "Template" And Worksheets(i).Name <> "Template (2)" And Worksheets(i).Name <> "Nom de la qualité" Then
           ActiveCell.Value = Sheets(i).Name
           ActiveCell.Offset(1, 0).Select
        End If
    Next i

Malheureusement je m'y connais pas assez pour modifier de manière correct le code parce que j'ai essayé plusieurs modifications mais elles ne sont pas justes .

Une âme charitable pour m'aider ?

bonjour,

Autrement dit tu as un saucisson : Tu nous donnes la peau et tu voudrais savoir si le saucisson est bon ?

Voir ici

A+

Bonjour galopin01 ,

Je ne comprends pas trop ce que je n'ai pas trop respecté dans la charte ?
Hormis si vous voulez un exemple type d'où j'ai pris le code, le voici :

Sub Snamelist()
Dim i As Integer

    Range("B5").Select

    For i = 1 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0).Select
    Next i

End Sub

Source : https://www.lecfomasque.com/excel-macro-noms-onglets/

J'essaie simplement de demandé de l'aide sur le fait d'adapter ce code pour qu'il l'exécute sur une autre page (exemple "Template") au lieu de la page où je me trouve au moment de lancer la macro.

Est-ce qu'écrit comme ça c'est mieux ?

Merci de votre aide ;-).

Bonjour toutes et tous

coucou Galopin01

@Cedric-pillonel

sans aucune certitude de ta requête,

est-ce comme cela un bouton avec la macro peu importe sur la feuille ou il se trouve celui-ci, qui quant à ce bouton affiche dans la cellule (B5) pour cet exemple sur la feuille Template ?

un module (voir module1)

le code ci-dessous:

Sub Snamelist()
' déclaration variable
Dim i As Integer

' en  cas d erreur
On Error Resume Next
With Sheets("Template").Activate

    Range("B5").Select

    For i = 1 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0).Select
    Next i
End With
End Sub

note: j'ai encadré la zone de la feuille Template pour tester la macro, et créer trois onglets :Template, Accueil et test + 2 boutons pour le même code

ci-joint:

crdlt,

André

Bonjour,

Alors je vais être plus explicite : Pour ce genre de truc il faut joindre ton fichier sinon tu nous demande de corriger les yeux bandés...

Néanmoins tu peux supprimer la plupart des données personnelles, mais pour l'essentiel ton classeur doit respecter la structure et les caractéristiques de ton vrai
fichier. Idéalement dans la plupart des cas il faut au moins laisser subsister au moins une ligne de données sinon véridique du moins plausible.

A+

A+

Oki, ça marche !

Merci de la réponse à vous deux .
@Andre13 J'ai pas vraiment bien compris ta question je crois, mais je vais essayer d'y réponse . Non je n'ai pas de bouton et je compte pas en mettre un ;-). Je me demandais cependant s'il était possible d'activer cette macro sans activer la page Template justement ?

Salutations,
Cédric Pillonel.

Bonjour toutes et tous

ok bien reçu Cedric -;) merci de ton retour

crdlt,

André

Bonjour…

Intégrer dans ta macro, pour ne pas avoir le nom cité dans la liste (adresse à adapter) :

Dim i As Integer
With Sheets("Template")
    For i = 1 To Sheets.Count
        If i <> Sheets("Template").Index Then .Cells(5 + i, 1) = Sheets(i).Name
    Next
End With

pour l’avoir :

 Dim i As Integer
 With Sheets("Template")
    For i = 1 To Sheets.Count: .Cells(5 + i, 1) = Sheets(i).Name: Next
 End With

Bien entendu, sans contexte précis ces macros ne sont pas garanties fiables, sans aucun problème récurrent (emplacement de la liste, évènementielle récursive), quel que soit le contexte !

Merci beaucoup !

Rechercher des sujets similaires à "code vba adapter page specifique active"