Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : [Excel | VBA] Identification de feuil dans un classeur [ Langages dérivés / VBA ] (AiDuK)

mercredi 30 juillet 2008 à 13:50:33 | [Excel | VBA] Identification de feuil dans un classeur

AiDuK

Bonjour à toutes et à tous,

J'ai un léger soucis dans mon code.
Je cherche à vérifier dans un classeur que j'ouvre, via une macro VBA, si il y a dans le classeur une feuille portant le nom de "fiche FR" ou de "fiche GB".

Le problème est que si dans le classeur il y a plusieurs feuilles ( dans l'ordre feuil1, fiche Fr, feuil2, feuil3 ), il ne regarde que la 1ère feuille de classeur.

Extrait de mon code :

Dim Ws As Worksheet

.........

For Each Ws In ActiveWorkbook.worksheets
           If UCase$(Ws.Name) = "FICHE FR" Or UCase$(Ws.Name) = "FICHE GB" Then
               Exit For


Quand je fais pas à pas, il regarde la 1ere feuille et déduit que feuil1 <> de Fiche FR ou Fiche GB

Du coup il ne fait pas la suite des actions.


Quelqu'un aurait il une réponse à apporter à mon calvaire svp ?

Cordialement,


AiDuK

mercredi 30 juillet 2008 à 14:33:04 | Re : [Excel | VBA] Identification de feuil dans un classeur

us_30

Membre Club

Euh... ton code fonctionne pourtant ? peut-être un p'tit truc qui t'échappes... voici le code de base :

=

Sub ess()

For Each ws In ActiveWorkbook.Worksheets
    If UCase$(ws.Name) = "FICHE FR" Or UCase$(ws.Name) = "FICHE GB" Then
        MsgBox "ok"
        Exit Sub
    End If
Next
    MsgBox "pas trouvé"
   
End Sub


=

Amicalement,
Us.


mercredi 30 juillet 2008 à 15:06:11 | Re : [Excel | VBA] Identification de feuil dans un classeur

AiDuK

Je viens de réessayer, mais cela ne marche toujours pas.

Il en regarde que la 1ere feuille de mon classeur et si celle ci n'est pas une des deux que je recherche, alors il en déduit que les feuille ne sont pas dans la classeur.

Je ne sais pas pourquoi ...


mercredi 30 juillet 2008 à 15:28:03 | Re : [Excel | VBA] Identification de feuil dans un classeur

us_30

Membre Club
Quel est ton code complet (enfin de la partie pour faire ce que tu dis)

Amicalement,
Us.

mercredi 30 juillet 2008 à 15:33:05 | Re : [Excel | VBA] Identification de feuil dans un classeur

AiDuK

Cette partie de code va ouvrir une fenetre pour parcourir les fichiers sur les disques durs. L'utilisateur choisi le fichier xls, et le programme regarde si dans le classeur selectionné, il y a une feuille du nom de fiche FR ou fiche GB.
Si oui alors , il procède à une extraction de cellule pour les stocker dans une base de données excel


Le code :


Sub Extraction()

'extrait les informations d'une FNC pour créer le début de la FIQ
 
   Dim ProchaineLigneVide As Long
   Dim FileToOpen As Variant
   Dim mes1 As Variant
   Dim marecherche As String
   Dim No As String
   Dim Ws As Worksheet
  
    Select Case design_pays
        Case "FR"
            mes1 = "Importation annulée !"
            mes2 = "Ce classeur ne contient pas de F.N.C. !"
           
        Case "GB"
            mes1 = "Importation cancelled !"
            mes2 = "This workbook doesn't have N.C.S. !"
    End Select
   
On Local Error GoTo MyOpen
    FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    Module5.NoFIQ
    If FileToOpen Then
MyOpen:
        If Err.Number = 13 Then
            Err.Clear: On Local Error GoTo 0
            Workbooks.Open FileToOpen
        End If
               
For Each Ws In ActiveWorkbook.worksheets
    If UCase$(Ws.Name) = "FICHE FR" Or UCase$(Ws.Name) = "FICHE GB" Then
        Exit For
       Else
       ActiveWorkbook.Close
       MsgBox mes2
       Exit Sub
       End If
       Next
  
       marecherche = Ws.Range("O10").Value
  
       With ThisWorkbook.Sheets("Liste Fournisseurs").Range("a:a")
           Set c = .find(marecherche, LookIn:=xlValues)
       End With
       If c Is Nothing Then Call Module1.affiche_fournisseur
           With ThisWorkbook.Sheets("recep")
               ProchaineLigneVide = .Range("A65536").End(xlUp).Row + 1
     
               .Range("A" & ProchaineLigneVide).Value = Workbooks("GestionFIQ.xls").Sheets("Présentation").Range("E100").Value
               .Range("B" & ProchaineLigneVide).Value = Ws.Range("D11").Value
               .Range("C" & ProchaineLigneVide).Value = Ws.Range("D10").Value
               .Range("D" & ProchaineLigneVide).Value = Ws.Range("O10").Value
               .Range("E" & ProchaineLigneVide).Value = Ws.Range("P2").Value
               .Range("F" & ProchaineLigneVide).Value = Ws.Range("B16").Value
               .Range("G" & ProchaineLigneVide).Value = Workbooks("gestionfiq.xls").Sheets("Liste Fournisseurs").Range("g1").Text
               .Range("H" & ProchaineLigneVide).Value = Workbooks("gestionfiq.xls").Sheets("Liste fournisseurs").Range("g2").Text
              
           End With
 
       
    No = Workbooks("GestionFIQ.xls").Sheets("présentation").Range("E100").Value
       
    MsgBox ("Nouvelle F.I.Q. N° " & No)
    ActiveWorkbook.Close
    Workbooks("GestionFIQ.xls").Close SaveChanges:=True
Exit Sub

    End If
    MsgBox mes1
    End Sub


mercredi 30 juillet 2008 à 15:37:10 | Re : [Excel | VBA] Identification de feuil dans un classeur

Molenn

Tu es sûr que ton code regarde dans le bon classeur ? Puisque tu travailles dans 2 classeurs et que si j'ai bien compris, tu ouvres le 2nd à partir du 1er.
Affiche le nom de tes feuilles quand tu les défiles, juste après le For each, rajoute un : msgbox ws.Name

Si tu n'es pas dans le bon classuer, le pb vient de ton activeworkbook.
Soit tu colles avant un Workbooks("Nom du classeur.xls").activate, soit tu remplaces dans ta boucle
For Each Ws In ActiveWorkbook.worksheets
par
For Each Ws In Workbooks("Nom du classeur.xls").worksheets

Molenn

mercredi 30 juillet 2008 à 15:49:16 | Re : [Excel | VBA] Identification de feuil dans un classeur

AiDuK

Bonjour Molenn,

Je viens de tester avec le msgbox ws.Name
Et je suis bien dans la bon classeur, cependant , il ne met qu'une seule msgbox avec marqué "feuil1", alors qu'il y a 2 feuilles : feuil1 et fiche FR  ( dans cet ordre )

donc cela ne vient pas d'un problème d'active workbook

Mais bien du fait qu'il ne regarde que la 1ere feuille de mon classeur

mercredi 30 juillet 2008 à 15:55:50 | Re : [Excel | VBA] Identification de feuil dans un classeur

us_30

Membre Club
Un peu de logique, avec le test IF...

For Each Ws In ActiveWorkbook.Worksheets
    If UCase$(Ws.Name) = "FICHE FR" Or UCase$(Ws.Name) = "FICHE GB" Then
        Exit For
    Else
       ActiveWorkbook.Close
       MsgBox mes2
       Exit Sub
    End If
Next

Si le 1er onglet n'est pas égale à "FICHE FR" ou "FICHE GB" alors on va à ELSE... donc on quitte la SUB ! dès le 1er test...

Voilà. Il faut pas de else. La solution simple c'est d'utiliser un marqueur Boolean...

Amicalement,
Us.




mercredi 30 juillet 2008 à 15:58:29 | Re : [Excel | VBA] Identification de feuil dans un classeur

AiDuK

D'accord, mais peux tu être un peux plus explicite s'il te plait, j'avoue que je n'ai pas tout suivi sur le marqueur boolean


mercredi 30 juillet 2008 à 15:58:29 | Re : [Excel | VBA] Identification de feuil dans un classeur

us_30

Membre Club

Voilà une idée...

Dim BonOnglet As Boolean

For Each Ws In ActiveWorkbook.Worksheets
    If UCase$(Ws.Name) = "FICHE FR" Or UCase$(Ws.Name) = "FICHE GB" Then
        BonOnglet = True
        Exit For
    End If
Next

If BonOnglet = False Then
    '....
    Exit Sub
End If

' sinon continue

Amicalement,
Us.



1 2

Cette discussion est classé dans : vba, ws, fiche, classeur, fr


Répondre à ce message

Sujets en rapport avec ce message

protéger le code source VBA d'un classeur Excel mais pb pour enregistrer des modifs [ par Fabala ] J'ai verrouillé le code source VBA de mon classeur (Excel97). Je suis allée dans les propriétes de "VBAProject"j'ai coché la case verrouiller le code HELP vba: automation excel: question facile? [ par sugus ] Bonjour,Novice en VB, j'ai un petit problème sur vba Excel.Je dois réaliser un module VBA intégré à un classeur Excel (97) qui charge un autre classe Ouverture d'un classeur Excel en VBA pour Excel 95 : URGENT [ par Jean-Luc ] J'aimerai ouvrir des fichiers Excel en forçant la mise à jour des liaisons, et ce dans un programme en VBA pourExcel 95 (VBA en français).J'ai essayé Changer les proprietes d'un classeur Excel via VBA [ par Downey ] Bonjour j'aimerais juste connaitre la methode/fonction/procedure qui permet de changer les proprietes (notamment le nom de l'auteu) d'un classeur Exce Ouvrir un nouveau Excel depuis le vba d'Excel [ par RouX ] J'ai un petit soucis :je voudrais ouvrir un nouveau classeur excel depuis une appli vba présent sur un autre classeur excel.Le pb est que je n'arrive Outlook et VBA? [ par nicorio ] Bonjour,je suis en stage et je dois réaliser la chose suivante : - Créer une fiche Outlook afin de gérer une liste de contacts déjà existante. - Mettr Comment afficher une cellule de plusieurs classeurs en VBA [ par sadikenpanik ] Hew Hew HowJ'ai, dans un dossier appelé projet, presque 800 classeurs Excel et je ne sais pas comment afficher dans une ComboBox chaque cellule A1 de Problèmes macros vba [ par Aldigo ] Bonjour,J'ai trois questions ( problèmes surtout! ) :- à partir d'un classeur ouvert comment puis-je y importer le contenu d'une colonne d'un classeur ouvrir un classeur depuis vba est le rendre invisible [ par Zynox ] j'aimerai surtout savoir comment rendre invisible un classeur excel que l'on a ouvert depuis vba excel j'utilise la methode application.visible = fals Excel VBA Lecture seule ou pas [ par daffy21 ] Bonjour à tous,A la fermeture d'un classeur, j'ai fait une ligne de code pour que celui ci s'enregistre automatiquement (afin d'éviter les messages),


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,607 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.