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 :

IsNumeric & nom de feuille [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut IsNumeric & nom de feuille
    Bonjour à tout le forum !

    Dans mon classeur, je souhaite très bêtement appliquer une mise en forme à certaines feuilles, plus particulièrement celles dont le nom est un chiffre/nombre.
    NB: ces feuilles ont été créées et nommées par macro.

    Voici le code:
    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
    Sub style_numbered_sheets()
    Dim sh As Worksheet
     
    Application.ScreenUpdating = False
     
        For Each sh In ThisWorkbook.Worksheets
            If IsNumeric(sh.Name) Then
                    sh.Activate
                    With ActiveWindow
                        .SplitRow = Range("A1").Row 
                        .FreezePanes = True
                    End With
                    Columns("A:G").Select
                    Selection.AutoFilter
                    Columns("C:D").EntireColumn.AutoFit
                    Columns("F:G").EntireColumn.AutoFit
            End If
        Next sh
     
    Application.ScreenUpdating = True      
    End Sub
    Ce que je ne comprends pas c'est que j'ai déjà utilisé cette méthode (celle du IsNumeric (sh.Name)) ; d'ailleurs, au sein de ce même classeur j'ai créé une petite macro qui supprime toute feuille dont le nom est un chiffre/nombre, hé bien j'ai justement utilisé IsNumeric(sh.Name) et ça fonctionne très bien !

    Je ne comprends pas.

    Merci d'avance pour votre aide !

    Kaera*

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tu veux dire que ça ne rentre jamais dans le if ?

  3. #3
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Salut ZerbreLoup,

    Excellent ton avatar !

    En effet, ça n'entre jamais dans le If.
    Et comme je l'ai dit, c'est vraiment étrange parce qu'au sein du même classeur j'utiliser exactement la même méthode mais pour supprimer (en gros il n'y a que le "then" qui change).

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Merci !

    Euh, pour info, la procédure qui efface toutes les feuilles qui ont un nom numérique n'est pas avant celle qui fait la mise en forme ? Dans ce cas, ce serait normal qu'il ne se passe rien !
    Question con je sais, mais on ne sait jamais...

    Sinon, en mode debug, tu as vérifié qu'il donnait False pour un IsNumeric(sh.Name) alors que le sh.Name ressemble à un numérique ? Il n'y a pas un espace ou un truc du genre quelque part ? Donne nous un exemple de nom qui ne fonctionne pas.

  5. #5
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Euh, pour info, la procédure qui efface toutes les feuilles qui ont un nom numérique n'est pas avant celle qui fait la mise en forme ? Dans ce cas, ce serait normal qu'il ne se passe rien !
    Non non, c'est une procédure qui est lancée par bouton et c'est dans un autre module.

    J'ai été tête-en-l'air, comme d'habitude !
    J'ai oublié de préciser que j'ai testé le mode pas-à-pas avec un espion sur sh.Name (non il n'y a pas d'espace), en fait au lieu de prendre le nom donné à ma feuille (donc ici 1,2,3...), il récupère le nom "originel", c'est-à-dire Feuil90, Feuil112 etc.
    Du coup, fatalement, il ne va rentrer dans le If...
    Mais pourquoi dans cette procédure détecte-t-il le nom "originel" alors que dans l'autre ça fonctionne sans problème ?

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Effectivement, normalement ce que tu appelle le nom originel est donné par la propriété CodeName et non Name. C'est assez bizarre. Tu as un bout de classeur pour voir ?

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    bonjour,

    Citation Envoyé par Kaera
    NB: ces feuilles ont été créées et nommées par macro.
    Il faudrait aussi mettre le code de cette procédure, vu que ce paraît être le seul point particulier..

    cordialement,

    Didier

  8. #8
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Salut Ormonth, Re ZebreLoup,


    Voici le bout de code correspondant à la procédure créant et nommant les feuilles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ' création de la liste sans doublon temporairement en col P
            xdlgn = Range("E63576").End(xlUp).Row
            [E1:E60000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[P1], Unique:=True
     
            With ThisWorkbook.Sheets("DATA")
              LastLig = .Cells(.Rows.Count, "E").End(xlUp).Row  'dernière ligne non vide de la col E
              For Each TheCell In .Range("P2", .Cells(.Rows.Count, "P").End(xlUp))
                Set NewSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))  'création feuille
                NewSheet.Name = TheCell 'les feuille créées psont nommées en fonction du numéro de plaque
                Application.Goto .Range("A1")
                .Range("E1").AutoFilter Field:=5, Criteria1:=TheCell.Value 'on filtre le tableau DATA en fonction du numéro de plaque
                .Range("A1:G" & LastLig).SpecialCells(xlCellTypeVisible).Copy Destination:=NewSheet.Range("A1") 'on colle le tableau FILTRé dans l'onglet correspondant
              Next TheCell
            End With
    Merci d'avance à vous deux,

    Kaera*

  9. #9
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    J'avoue que là, sans le classeur, je sèche...

  10. #10
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Citation Envoyé par ZebreLoup Voir le message
    J'avoue que là, sans le classeur, je sèche...
    Justement, je voulais te demander ce que tu entends pas le classeur.
    Tu veux un fichier exemple ?
    Parce que je ne peux divulguer certaines données, et de ces données, il y en a beaucoup.

  11. #11
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Oui, un classeur Excel est un fichier Excel, comme une feuille est un onglet. Et effectivement, comme le problème que tu présentes n'est pas logique (ça ne devrait pas arriver, si tout était exactement comme tu le décris), ça doit venir d'une petite erreur qui peut être n'importe où. Et le meilleur moyen serait d'avoir le classeur.
    Je comprends qu'il puisse y avoir des données confidentielles, dans ce cas, il faudrait simplifier le fichier avant de l'attacher. Mais ce n'est pas toujours facile et il faut être sûr que le problème se produit également dans le fichier simplifié.

  12. #12
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Je vois. C'est d'autant plus infaisable que la macro, au départ, consiste en l'import d'un fichier texte et la mise en forme (et autres traitements) de celui-ci.
    Autrement dit sans le fichier texte, ça ne fonctionnera pas et je ne peux vraiment pas du tout vous fournir ce fichier texte.

    Je vais tâcher de contourner le problème en utilisant une autre méthode que If et IsNumeric.
    Merci tout de même Messieurs et pardon pour le temps perdu.

    Kaera*

  13. #13
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu aurais pu t’intéresser à ce que contient la colonne P.
    Il ne faudrait pas que tes nombres contiennent un point (1.2 par exemple).
    Auquel cas il ne serait pas reconnu comme numérique.

    Cordialement.

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    si tu veux éviter le "if isnumeric" sur tes feuilles tu pourrais rassembler tout les sheets numeric au début ou a la fin et boucler sur les X premiers ou les X derniers
    cela dit je ne comprend pas moi non plus ta macro fonctionne très bien

    a condition qu'il y est quelque chose d'écrit sur les plage concernée par le autofilter sans ça c'est le bug c'est peut être ça

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Citation Envoyé par Kaera Voir le message
    J
    Je vais tâcher de contourner le problème en utilisant une autre méthode que If et IsNumeric

    Kaera*
    Pas forcément une bonne idée car tu occultes le problème et il peut ressurgir sous une autre forme etc...

    Sinon, au hasard dans la fenêtre projet du VBE, tu as bien un CodeName différent du Sheet.name sur tes nouvelles feuilles ?

    ça tu peux mettre un snapshot si besoin.

    cordialement,

    Didier

  16. #16
    Membre éclairé
    Avatar de Kaera
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 185
    Par défaut
    Encore une fois, honte à moi d'avoir laissé cette discussion en suspens.

    Pour info, pour ceux qui tombent sur ce topic à la recherche de solution, voici ma bidouille :

    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
    Sub style_numbered_sheets()
    Dim sh As Worksheet
     
    Application.ScreenUpdating = False
    On Error GoTo fin
     
        For Each sh In ThisWorkbook.Worksheets
           ' Je n'ai que deux feuilles non numériques, c'est donc le moyen de "contourner" le problème et dans mon cas, ça suffit amplement mais comme dit Ormonth, ce n'est pas forcément une bonne solution.
            If sh.Name <> "Accueil" And sh.Name <> "DATA" Then
                    sh.Activate
                    With ActiveWindow
                        .SplitRow = Range("A1").Row 'fige les en-têtes
                        .FreezePanes = True
                    End With
            End If
        Next sh
     
    Application.ScreenUpdating = True
     
    fin:
     
    End Sub

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu!...
    malgré le résolu

    je rejoins l'idée de zebreloup il dois y avoir une variable quelque part qui doit être utilisé deux fois ou quelque chose comme ça

    j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub trucmachin()
        For Each sh In ThisWorkbook.Worksheets
            If IsNumeric(sh.Name) Then
                sh.Activate
                With ActiveWindow
                    .SplitRow = Range("A1").Row    'fige les en-têtes
                    .FreezePanes = True
                End With
            End If
        Next
    End Sub
    ça fonctionne très bien pour moi
    j'ai essayé avec un msgbox ça me donne bien le nom des feuilles tel que je les ai nommé
    et non pas leur code name
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [VBA-E]Nom de feuille
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/09/2006, 16h42
  2. [VBA E] nom de feuille dans une combobox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/06/2006, 19h53
  3. [VBA] nom de feuille en paramètre
    Par preverse dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/04/2006, 11h34
  4. [VBA-E] Verifier qu'un nom de feuille n'est pas utilisé
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2006, 09h19
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

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