Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 08h35   #1
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
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 :
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*
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 10h21   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu veux dire que ça ne rentre jamais dans le if ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h21   #3
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
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).
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h27   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h42   #5
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
Citation:
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 ?
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 11h54   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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 ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 12h21   #7
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 13h45   #8
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
Salut Ormonth, Re ZebreLoup,


Voici le bout de code correspondant à la procédure créant et nommant les feuilles :
Code :
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*
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h10   #9
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
J'avoue que là, sans le classeur, je sèche...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h25   #10
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
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.
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h31   #11
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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é.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 14h46   #12
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
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*
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 15h15   #13
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 695
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 695
Points : 1 447
Points : 1 447
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.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 15h29   #14
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/12/2011, 15h34   #15
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
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
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2012, 08h18   #16
Membre du Club
 
Avatar de Kaera
 
Femme
Étudiant
Inscription : novembre 2011
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Santé

Informations forums :
Inscription : novembre 2011
Messages : 102
Points : 69
Points : 69
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 :
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
__________________
.
Si la réponse d'un membre vous satisfait, pensez à voter en cliquant sur le pouce levé !
***
Un vote négatif sans justification, c'est dénué d'intérêt !
Accompagnez-le d'un message explicatif, cela évitera au membre visé de reproduire la même erreur. Bien plus efficace !

...An ka mandéw, mèt taw ek tan mwen pou sa fè an lô...
Kaera est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2012, 12h44   #17
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
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 :
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:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h40.


 
 
 
 
Partenaires

Hébergement Web