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 :

amélioration de code -récuperation de nom feuille1 via CheckBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut amélioration de code -récuperation de nom feuille1 via CheckBox
    Bonjour,
    Je souhaitre améliorer mon code suivant car je commence à m'enméler les poinceaux ...
    tout d'abord je souhaiterais récupérer dans une variable (fonction) le nom de la première feuille du classeur que j'ouvre. Je souhaite ainsi utliser autant de fois que nécessaire, n'importe ou dans mon code.
    Ensuite, devez le voir, mon code est "pitoyable" donc si suggestion vous avez, je prends car ca devient trop "brouillon" ... Merci!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        If CheckBox2 = True Then
            If TextBox1 <> "" Then
                MsgBox "Did you Start TOTO CheckSum ?"
                Set myWorkbookImport = Workbooks.Open(Filename:=TextBox1)
                'permet de récuperer le nom de la feuille1 du fichier importé
                If Not ActiveSheet Is Nothing Then
                Set MaFeuille = ActiveSheet
                MsgBox MaFeuille.Name
                End If
                Call LTE_CheckSum_Rules
                MsgBox "LTE CheckSum Completed for " & TextBox1
            End If
        End If
    Chrystobale

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    Je propose ceci :
    créer dans un module
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Function RetourneNomFeuille(classeur As String, numFeuille As Integer) As String
     On Error GoTo erreur
     NomFeuille = ""
     If numFeuille < 1 Then Exit Function
     
     Dim xlw As Workbook, xls As Worksheet, ouvert As Boolean
     If ClasseurOuvert(classeur) Then ouvert = True
     If Not ouvert Then Workbooks.Open classeur
     Set xlw = Workbooks(Mid$(classeur, InStrRev(classeur, "\") + 1))
     n = xlw.Worksheets.Count
     If numFeuille > n Then Exit Function
     NomFeuille = xlw.Worksheets(numFeuille).Name
     If Not ouvert Then ActiveWorkbook.Close
     
    Exit Function
    erreur:
    End Function
     
    Function ClasseurOuvert(classeur As String) As Boolean
     Dim xlw As Workbook
     ClasseurOuvert = False
     For Each xlw In Workbooks
      If UCase$(xlw.FullName) = UCase$(classeur) Then ClasseurOuvert = True:Exit For
     Next xlw
    End Function
    L'appel se fait ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     NomFeuille=RetourneNomFeuille("dossier\NomClasseur.xls",1)
    Les avantages :
    Une fonction qui peut être utilisée partout dans le code
    Le numero de la feuille peut être spécifiée (dans l'exemple, 1 correspond à la premère feuille)
    Si le classeur est fermé, celui-ci est ouvert pour récupérer la feuille puis refermé

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut
    bonjour,
    Merci pour ta reponse que je viens d'essayer mais je n'ai rien comme résultat ...
    j'ai déclaré NomFeuille comme variable String du fait que Function RetourneNomFeuille est en string, est ce correct ?

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut
    re-bonjour Helas,

    Sauf erreur de ma part, je pense avoir idéntifié une variable incorrectement définit dans la partie de ton code de la fonction RetourneNomFeuille

    en effet la fonction ne retourne aucune valeur et il me semble que cela vient de la partie suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFeuille = xlw.Worksheets(numFeuille).Name
    Je l'ai "légèrementé modifié par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RetourneNomFeuille= xlw.Worksheets(numFeuille).Name
    Après ca marche très bien.
    Peux tu me confirmé afin de ne pas avoir un effet de bord quelconque sinon merci beaucoup pour m'avoir répondu aussi rapidement avec un code intéressant car j'ai pu découvrir de nouvelles fonctions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Amélioration du code de l'envoi d'une feuille par mail via LotusNotes
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 03/11/2008, 14h39
  2. [Sécurité] Comment amélioré mon code ?
    Par Nadd dans le forum Langage
    Réponses: 14
    Dernier message: 03/03/2006, 20h13
  3. [VB]récuperer le nom d'un routeur
    Par Mut dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/02/2006, 13h33
  4. Récuperer le nom du proprietaire d'un processus
    Par leyee dans le forum Threads & Processus
    Réponses: 4
    Dernier message: 08/11/2005, 02h26
  5. [ADSI] récuperer un nom de domaine
    Par Overflow64 dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 04/06/2005, 22h16

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