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
[WINDOWSPHONE7] LECTEUR DE FLUX RSS[WINDOWSPHONE7] LECTEUR DE FLUX RSS par Vko
Parce que j'aime pas tester à moitié, je me suis amusé à développer un petit lecteur de flux RSS avec un look qui vous rappellera surement quelque chose :) La RC de Visual Studio est plutôt molle mais fonctionne correctement. L'émulateur est pas...
Cliquez pour lire la suite de l'article par Vko [WP7] L'éMULATEUR WINDOWS PHONE 7 EST MULTITâCHE[WP7] L'éMULATEUR WINDOWS PHONE 7 EST MULTITâCHE par KooKiz
Une question qui reste en suspend concernant Windows Phone 7 est de savoir si le système permettra à plusieurs applications de s'exécuter simultanément, ou si un système de mise en pause similaire à celui de l'iPhone sera adopté. Même si cela ne perm...
Cliquez pour lire la suite de l'article par KooKiz PRéSENTATION CLUB MOSS CE JOUR "LA NOUVELLE ARCHITECTURE DE SERVICES SHAREPOINT 2010".PRéSENTATION CLUB MOSS CE JOUR "LA NOUVELLE ARCHITECTURE DE SERVICES SHAREPOINT 2010". par Patrick Guimonet
Ca y est la sortie RTM de SharePoint 2010 est annoncée pour le 16 avril 2010 (annonce faite ce jour par Erol Giraudy lors de la réunion du club MOSS). Vous pourrez trouver ici les slides de ma présentation du jour dans le cadre du club MOSS : 201...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WINDOWPHONE7] PREMIERS PAS[WINDOWPHONE7] PREMIERS PAS par Vko
Hop voici les premiers pas avec les outils de développement pour Windows Phone 7. Premier changement suite à l'installation des outils : les type de projets pour la plateforme Windows Phone 7. Les projets se découpent en deux groupes : Les projet...
Cliquez pour lire la suite de l'article par Vko [WP7] LE SDK DE WINDOWS PHONE 7 EST DISPONIBLE ![WP7] LE SDK DE WINDOWS PHONE 7 EST DISPONIBLE ! par KooKiz
Comme le titre l'indique, une première CTP du kit de développement pour Windows Phone 7 est disponible. Basé sur Visual Studio 2010 Express, il propose de développer des applications pour WP7 en Silverlight ou XNA 4. Un émulateur est bien entendu de l...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|