IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Changement de feuille par Macro activée par un Bouton


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Changement de feuille par Macro activée par un Bouton
    Bonjour à tous,

    J'ai écrit quelques macros pour de la gestion de comptes financiers, qui marchent très bien et ont été éprouvées . J'ai décidé de regrouper ces différentes fonctions sur une feuille de mon document excel, et de créer des boutons qui appellent ces différentes macros. Problème: lorsque j'édite le code d'un bouton et que j'y colle ma macro, le programma se comporte différemment. Voici l'extrait du code qui pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub CommandButton1_Click()
     
     
    Worksheets(3).Select
     
    j = 3
    While Cells(j, 1) <> ""
     
    ...
    j = j + 1
     
    Wend
    ...
    Lorsque j'exécute le bouton (situé en Feuil1), la macro plante au moment du test "While Cells(j, 1) <> "" ". En effet, il va chercher la Cells(j,1) de la feuil1 alors que je lui ai explicitement demandé de sélectionner la 3, comme s'il était bloqué sur la Feuil1.
    Si j'exécute la macro en dehors du bouton, Cells(j,1) correspond bien au contenu de la cellule(j,1) de la Feuil3. N'est-il pas possible de travailler sur différentes feuilles avec un bouton?...

    Je travaille sous Excel 2003 comme précisé dans le titre. Si vous avez besoin de précisions n'hésitez pas à me demander, et merci pour votre aide!

  2. #2
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    Salut,

    a la place de Cells(j,1) met Worksheets(3).cells(j,1)
    Da vinci Code....


    Code??? qui a dit Code?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    J'y avais pensé, mais comme mon code est assez long, dois-je le rajouter à chaque appel de cellule? N'y a-t-il pas un moyen de rester sur la feuille 3 et de travailler dessus?

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Si ton code est dans le code de la feuille 1 oui tu dois préciser (enfin j'ai jamais trouver de solution alternative)

    Le plus simple est d'utiliser un with comme cela tu as juste a rajouter un . devant les range et les cells

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    with Worksheets(3)
     
    j = 3
    While .Cells(j, 1) <> ""
     
    ...
    j = j + 1
     
    Wend
    ...
    end with
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  5. #5
    Membre actif Avatar de Many31
    Profil pro
    Inscrit en
    Février 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2007
    Messages : 198
    Points : 210
    Points
    210
    Par défaut
    Désolé de remettre une couche

    Pour simplifier mon code des fois j'utilise une variable Worksheet pour nommer une feuille et l'appeler plus facilement


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub Modifier_Fichier(ChFichier, Nom_Feuille, Nom_Feuille2)
    Dim ActF As Worksheet
    Dim Fichier As Workbook
    Dim DirF As Worksheet
     
    Set ActF = ThisWorkbook.Sheets(Nom_Feuille)
    Set Fichier = Workbooks.Open(ChFichier)
    Set DirF = Fichier.Sheets(Nom_Feuille2)
     
     
    DirF.Cells(1, 2) = ActF.Cells(2,2)
     
    Fichier.Save
    Fichier.Close
     
    End Sub
    Da vinci Code....


    Code??? qui a dit Code?

Discussions similaires

  1. [XL-2007] Protection des feuilles graphiques avec modification par macro
    Par Cesaror dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/07/2012, 14h34
  2. [XL-2007] Coma copier des données d'une ou 2 feuilles vers 1 nouvel par macro
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/03/2012, 02h41
  3. [XL-2007] Macro activée par bouton de commande
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/11/2010, 14h19
  4. instructions pour accéder à une feuille d'un classeur par macro
    Par rogerone dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/02/2010, 12h30
  5. Protéger les feuilles de la modification par macro
    Par blobnet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/01/2009, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo