AiDuK
Messages postés80Date d'inscriptionlundi 22 octobre 2007StatutMembreDernière intervention30 juillet 2008
-
24 juil. 2008 à 10:02
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
24 juil. 2008 à 21:16
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
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 24 juil. 2008 à 11:44
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
lillith212
Messages postés1229Date d'inscriptionvendredi 16 novembre 2007StatutMembreDernière intervention16 juin 2009 24 juil. 2008 à 10:15
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
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
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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 24 juil. 2008 à 10:43
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.
AiDuK
Messages postés80Date d'inscriptionlundi 22 octobre 2007StatutMembreDernière intervention30 juillet 2008 24 juil. 2008 à 10:47
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
AiDuK
Messages postés80Date d'inscriptionlundi 22 octobre 2007StatutMembreDernière intervention30 juillet 2008 24 juil. 2008 à 10:47
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
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 24 juil. 2008 à 21:16
Salut,
sinon tu peux simplement activer la feuille et gerer l'erreur dans le cas ou elle n'existe pas :
dim NomFeuille(2) As String, i As Long
NomFeuille(1) = "FICHE FR"
NomFeuille(2) = "FICHE GB"
For i = 1 to 2
err.clear
on error resume next
ActiveWorkbook.Worksheets(NomFeuille(i)).Activate
if err = 0 then Exit For
if i=2 then
MsgBox "Importation annulée !/Importation cancelled !"
err.clear
Exit Sub
End If
Next i