Accueil > Forum > > > > [Excel | VBA] Condition sur nom de la feuille
[Excel | VBA] Condition sur nom de la feuille
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
|
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
|
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
|
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
|
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
|
|
Cette discussion est classée 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
Livres en rapport
|
Derniers Blogs
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|