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] Condition sur nom de la feuille [ Langages dérivés / VBA ] (AiDuK)

jeudi 24 juillet 2008 à 10:02:44 | [Excel | VBA] Condition sur nom de la feuille

AiDuK

Bonjour à toutes et à tous,

Mon code est presque terminé, cependant, je boque sur une partie.
Ce code permet de parcourir l'ordinateur pour ouvrir n'importe quel fichier xls.
Une fois le fichier ouvert, il recherche la feuille appelée "FICHE FR", et fait l'extraction à partir de cellules définies.

Ce que je souhaite faire, est que cela fasse l'extraction si la feuille du document s'appelle "FICHE FR" , mais aussi si elle s'appelle "FICHE GB" .
Il peut y avoir l'un autre l'autre nom , mais pas les deux à la fois dans le même classeur xls.

De plus, j'aimerais bien faire en sorte d'afficher une msgbox si le document sélectionné ne possède pas de feuille qui corresponde à l'un ou l'autre des noms.


Voici mon code actuel, celui ci fonctionne très bien pour le cas ou il ne peut y avoir qu'un seul nom de feuille  : FICHE FR



Sub Extraction()

 
   Dim ProchaineLigneVide As Integer
   Dim FileToOpen As Variant
   Dim mes1 As Variant
   Dim marecherche As String
   Dim No As String
  
    Select Case design_pays
        Case "FR"
            mes1 = "Importation annulée !"
           
        Case "GB"
            mes1 = "Importation cancelled !"
    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

    marecherche = ActiveWorkbook.Sheets("FICHE FR").Range("O10").Value
   
    With ThisWorkbook.Sheets("Liste Fournisseurs").Range("a:a")
    Set c = .find(marecherche, LookIn:=xlValues)
    End With
    If c Is Nothing Then
    Module1.affiche_fournisseur
    End If
          
    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 = ActiveWorkbook.Sheets("FICHE FR").Range("D11").Value
    .Range("C" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("D10").Value
    .Range("D" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("O10").Value
    .Range("E" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("P2").Value
    .Range("F" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").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
Exit Sub

    End If
    MsgBox mes1
End Sub


jeudi 24 juillet 2008 à 10:15:40 | Re : [Excel | VBA] Condition sur nom de la feuille

lillith212

Membre Club
Salut;

Sub Extraction()


   Dim ProchaineLigneVide As Integer
   Dim FileToOpen As Variant
   Dim mes1 As Variant
   Dim marecherche As String
   Dim No As String
  
    Select Case design_pays --> Variable public? C'est un choix de l'utilisateur? Si oui tu peux t'en servir pour la suite.
        Case "FR"
            mes1 = "Importation annulée !"
           
        Case "GB"
            mes1 = "Importation cancelled !"
    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

    marecherche = ActiveWorkbook.Sheets("FICHE FR").Range("O10").Value
    marecherche = ActiveWorkbook.Sheets("FICHE "& design_pays ).Range("O10").Value '-->Rapport à ma remaque plus haut

    With ThisWorkbook.Sheets("Liste Fournisseurs").Range("a:a")
    Set c = .find(marecherche, LookIn:=xlValues)
    End With
    If c Is Nothing Then
    Module1.affiche_fournisseur
    End If
          
    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 = ActiveWorkbook.Sheets("FICHE "& design_pays ).Range("D11").Value
    .Range("C" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE "& design_pays ).Range("D10").Value
    .Range("D" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE "& design_pays ).Range("O10").Value
    .Range("E" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE "& design_pays ).Range("P2").Value
    .Range("F" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE "& design_pays ).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
Exit Sub

    End If
    MsgBox mes1
End Sub


C'est une idée....

S.L.B.


*********************************************************************************
<>

jeudi 24 juillet 2008 à 10:16:24 | Re : [Excel | VBA] Condition sur nom de la feuille

jrivet

Membre Club
Salut,
Tu peux peu etre te servir de ta variable design_pays pour la concaténer avec le nom de la feuille

'Ex:
ActiveWorkbook.Sheets("FICHE FR")
'devient
ActiveWorkbook.Sheets("FICHE " & design_pays)

Sub Extraction()
Dim ProchaineLigneVide As Long
Dim FileToOpen As Variant
Dim mes1 As String
Dim marecherche As String
Dim No As String
 
   Select Case design_pays
       Case "FR": mes1 = "Importation annulée !"
       Case "GB": mes1 = "Importation cancelled !"
   End Select
 
On Local Error GoTo MyOpen
   FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
   Call Module5.NoFIQ
   If FileToOpen Then
MyOpen:
       If Err.Number = 13 Then
           Err.Clear: On Local Error GoTo 0
           Workbooks.Open FileToOpen
       End If

       marecherche = ActiveWorkbook.Sheets("FICHE FR").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 = ActiveWorkbook.Sheets("FICHE FR").Range("D11").Value
           .Range("C" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("D10").Value
           .Range("D" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("O10").Value
           .Range("E" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").Range("P2").Value
           .Range("F" & ProchaineLigneVide).Value = ActiveWorkbook.Sheets("FICHE FR").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
     
       Call MsgBox("Nouvelle F.I.Q. N


NOTE:
Ta variable ProchaineLigneVide DOIT etre de type Long et non Integer (65535 ne tiens pas dans un Integer)

pourquoi mes1 est il de type Variant alors qu'il devrait être de type String

@+: Ju£i¤n
Pensez: Réponse acceptée

jeudi 24 juillet 2008 à 10:17:09 | Re : [Excel | VBA] Condition sur nom de la feuille

jrivet

Membre Club
Re,
Bah voilà le temps de rédiger le message et PAN!!! je me suis fait grillé!!!


@+: Ju£i¤n
Pensez: Réponse acceptée

jeudi 24 juillet 2008 à 10:29:19 | Re : [Excel | VBA] Condition sur nom de la feuille

AiDuK

Merci à vous deux d'avoir pris le temps de répondre.
Cependant, il y a un léger soucis, j'avais déjà pensé à faire :

ActiveWorkbook.Sheets("FICHE FR")
'devient
ActiveWorkbook.Sheets("FICHE " & design_pays)

mais le problème est :

Un francais utilise le programme, donc il laisse la langue par défaut ( FR ), mais il peut etre amené à importer une "fiche fr" ou une "fiche gb".

De même que si quelque d'anglophone utilise le programme, il met la langue en anglais, mais sera amené à importer soit des fiche fr soit fiche gb.

D'ou mon problème, je ne vois pas torp comment gérer ca   : \

jeudi 24 juillet 2008 à 10:43:10 | Re : [Excel | VBA] Condition sur nom de la feuille

Molenn

Question : Dans ton premier post, je lis :
"Ce que je souhaite faire, est que cela fasse l'extraction si la feuille du document s'appelle "FICHE FR" , mais aussi si elle s'appelle "FICHE GB" .
Il peut y avoir l'un autre l'autre nom , mais pas les deux à la fois dans le même classeur xls."

Je n'ai pas eu le courage de lire tout ton code mais, si c'est juste le nom qui change, étant donné qu'il ne peut y avoir qu'un seul et unique nom dans ton fichier, c'est donc la même feuille (à moins que la structure du fichier ne change aussi ?).
S'il s'agit de la même feuille, tu dois pouvoir utiliser son index à la place du nom.
Si tu utilises ActiveWorkbook.Sheets(3) (en admettant que la feuille soit la 3ème de ton fichier, toi seule le sait), dans la version anglaise, le .name sera FICHE GB et FICHE FR dans la version française, tu n'as même pas besoin de t'en occuper.

Après, à toi de voir si c'est utilisable dans ton cas.

Molenn

jeudi 24 juillet 2008 à 10:47:11 | Re : [Excel | VBA] Condition sur nom de la feuille

AiDuK

La feuille à partir de laquelle l'extraction est faite fait parti d'un classeur ou il n'y a qu'une seule feuille.

Cependant, je suis obligé de paramètrer des noms de feuille parce que si l'utilisateur ouvre n'importe quel autre fichier xls, l'extraction va se faire sur des données sans aucun rapport.

Donc en final , je suis bien obligé de faire avec Fiche FR et Fiche GB


jeudi 24 juillet 2008 à 10:47:12 | Re : [Excel | VBA] Condition sur nom de la feuille

AiDuK

La feuille à partir de laquelle l'extraction est faite fait parti d'un classeur ou il n'y a qu'une seule feuille.

Cependant, je suis obligé de paramètrer des noms de feuille parce que si l'utilisateur ouvre n'importe quel autre fichier xls, l'extraction va se faire sur des données sans aucun rapport.

Donc en final , je suis bien obligé de faire avec Fiche FR et Fiche GB


jeudi 24 juillet 2008 à 11:44:38 | Re : [Excel | VBA] Condition sur nom de la feuille

jrivet

Membre Club
Réponse acceptée !
Salut,
Sinon tu fais une recherche dans le nom des feuilles du classeur.

En imaginant que dans un classeur il n'y ai QUE FR ou QUE GB


Sub Extraction()
Dim ProchaineLigneVide As Long
Dim FileToOpen As Variant
Dim mes1 As String
Dim marecherche As String
Dim No As String
Dim Ws As Worksheet

   Select Case design_pays
       Case "FR": mes1 = "Importation annulée !"
       Case "GB": mes1 = "Importation cancelled !"
   End Select

On Local Error GoTo MyOpen
   FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
   Call Module5.NoFIQ
   If FileToOpen Then
MyOpen:
       If Err.Number = 13 Then
           Err.Clear: On Local Error GoTo 0
           Call Workbooks.Open(FileToOpen)
       End If
       
       'on passe en revue toutes les feuille du classeur
       'et on regarde si il y en a une appelée FICHE FR ou FICHE GB
       For Each Ws In ActiveWorkbook.Worksheets
           If UCase$(Ws.Name) = "FICHE FR" Or UCase$(Ws.Name) = "FICHE GB" Then
               Exit For
           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
       
           Call MsgBox("Nouvelle F.I.Q. N " & No)
           Set Ws = Nothing
           Call ActiveWorkbook.Close

       Exit Sub
   End If
   Call MsgBox(mes1)
End Sub
By Renfield


@+: Ju£i¤n
Pensez: Réponse acceptée

jeudi 24 juillet 2008 à 12:01:31 | Re : [Excel | VBA] Condition sur nom de la feuille

AiDuK

Merveilleux tout ca.

Je ne connaissais pas comme fonction , maintenant , je vais la mémoriser.

Encore merci pour l'aide que vous m'avez apportée, et pour le temps que vous avez passé à lire, chercher, et à répondre.

Bonne journée à vous,

Cordialement,


AiDuK


1 2

Cette discussion est classé dans : value, range, fiche, sheets, prochainelignevide


Répondre à ce message

Sujets en rapport avec ce message

[Excel] Faire une extraction sans doublon [ par AiDuK ] Bonjour à toutes et à tous,Je cherche actuellement à faire une extraction d'une feuille qui sert de formulaire, vers une pseudo base de donnée sous Ex [Excel] Faire une Extraction en choisissant le fichier et la feuille d'ou l'on extrait [ par AiDuK ] Bonjour à toutes et à tous,Actuellement, mon code me permet d'extraire les informations contenues dans une feuille excel ( formulaire ), afin de les a [Excel | VBA] Enregistrer données dans 2 classeurs différents à la fois [ par AiDuK ] Bonjour tout le monde,Je cherche à faire une manipulation un peu hasardeuse.En fait, j'ai 2 classeurs ( GestionFIQ.xls et bddFIQ.xls ), ce que je souh pb temps d'exécution [ par speedyk62 ] Bonjour,Voilà mon problème, j'ai à peu pret 2000 lignes à traiter. J'extrais des données de la feuille b vers la feuille a. Je mets 10 min à exécuter Références [ par tntdesign ] A l'aiiiiiide ! ! ! ! ! Tout d'abord bonjour ! j'ai un très gros problème.Je m'explique: j'ai fait un programme sous VB dans excel (officePro 2003) qu Problème dans les conditions pour une textbox avec excel et VBA 6 [ par fireup11 ] Bonjour à tous, Je développe un programme présentement avec aucune base mais je me débrouille quand même et j'aimerai savoir si quelqu'un peut m'aide Erreur d'execution 13 [ par eista ] Bonjour,J'ai une erreur d'éxecution 13 incompatibilité type sur la ligne suivante:If Sheets(1).Cells("C26").Value = "" And Sheets(c).Cells("Q252").Val Macro excel [ par nanie13 ] Bonjour, Numérotation composée [ par Gabriel ] Bonjour à toutes et à tous,J'ai un petit soucis pour la mise en place d'une numérotation de dossiers dépendant d'un choix dans une ComboBox... Je disp Problème de saisie d'info d'un UserForm [ par Sdbswiss ] Bonjour à tous,J'ai un  problème avec le code d'un fichier excel. Le problème est simple mais l'explication l'ai moins. Bon je me lance:Le fichier exc


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

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 : 0,593 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é.