|
Trouver une ressource
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)
Informations & options pour cette discussion
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é 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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|