Ouvrir un fichier contenant un onglet préchoisi

elokapo

XLDnaute Junior
Bonjour,

Voilà mon soucis et ma/mes question(s) : j'ai 4 fichiers Excel qui ont toujours le meme nom, dans lesquels plusieurs onglets existent. Chaque nom d'onglet est différent.

Je voudrai à partir d'une inputbox (dans un fichier A) entrer le début du libellé d'un des onglets (se trouvant dans un fichier B, C OU D) , et que par magie, l'onglet s'imprime (sans ouvrir le fichier ;) )

En fait, il faudrait lui faire chercher dans chacun des fichiers B C et D si l'onglet 'X' existe.

Je sais comment faire pour vérifier si un fichier est existant dans un répertoire, et l'ouvrir, (If Dir(".... then .... Workbooks.OpenText Filename:=".....)) mais là, sur ce problème je bloque !

Pourriez vous m'aiguiller svp ?

Merci encore pour toutes vos solutions !

Elokapo
 

Toine

XLDnaute Occasionnel
Re : Ouvrir un fichier contenant un onglet préchoisi

bonjour
je pense qu'il va forcément falloir l'ouvrire pour y imprimer maisd rien tempeche de le refermer trés vite pour pas que sa ce voit (genre david coperFeild)
je pense donc qu'il faut l'ouvrire l'imprimer et le refermer et le tour est jouer
tu sait deja comme louvirre et le choisir reste a imprimer et a fermer
fermer sa tu doit sa voir aussi non ??

pour imprimer jai trouyver sa dans un coin du forum
Code:
Workbooks("rpl.xls").Sheets("sheet1").PrintOut Copies:=1, _
     ActivePrinter:="Nom de l'imprimante", Collate:=False
le nom du workbook est a adapter ainsi que la feuille je pense
si sa t'aide ou pas d'ailleur dit le quand mm
 
Dernière édition:

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Toine à dit:
bonjour
je pense qu'il va forcément falloir l'ouvrire ... pour imprimer jai trouyver sa dans un coin du forum
Code:
Workbooks("rpl.xls").Sheets("sheet1").PrintOut Copies:=1, _
     ActivePrinter:="Nom de l'imprimante", Collate:=False
le nom du workbook est a adapter ainsi que la feuille je pense
si sa t'aide ou pas d'ailleur dit le quand mm

Hello,

Merci quand meme mais comme tu peux l'imaginer, ca ne m'arrange pas. En fait j'ai trouvé ceci sur le forum, ce qui permet de lister les noms des onglets.

Maintenant reste à savoir s'il est possible d'effectuer une recherche sur plusieurs fichiers et d'ouvrir le fichier qui contient l'onglet préchoisi.

Merci de votre aide !

A+
 

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi - essai

Rebonjour,

Voici ce que j'ai essayé : pourriez vous me dire ce qui est faux car il y a comme un hic : cela ne marche pas ! hellpppppppppppp !!!

Merci par avance !

Elokapo
 

Pièces jointes

  • ouvrelebononglet.xls
    33 KB · Affichages: 82

michel_m

XLDnaute Accro
Re : Ouvrir un fichier contenant un onglet préchoisi

Bonjour Elokapo,

Il y a plusieurs post sur le m^me sujet et je répond au + récent mais, je signale ce changement dans l'autre: bref! cest le B...! :( Fais attention quand m^me lors de tes prochaines demandes

ci dessous proposition; les classeurs doivent être dans le m^me dossier

Code:
Private fichier As String
Private onglet As String
Private chemin As String
Private trouve As Boolean

Sub fouiller()
'force dans le répertoire de travail
onglet = InputBox("nom de l'onglet?")
If onglet = "" Then: Exit Sub

chemin = ThisWorkbook.Path
ChDir chemin

' on réduit la sélection en utilisant un joker "*"
fichier = Dir("*.xls")
    While fichier <> ""
        inspecter
        If trouve = True Then
            Workbooks.Open fichier
            Sheets(onglet).Activate
            Exit Sub
        End If
        fichier = Dir
        
    Wend
End Sub

Sub inspecter()
Dim source As Object
Dim cat As Object
Dim feuil

fichier = chemin & "\" & fichier

' Initialisation
  Set source = CreateObject("ADODB.Connection")
  Set cat = CreateObject("ADOX.Catalog")
  
' ouvre la connection
  source.Open _
    "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & fichier & ";Extended Properties=Excel 8.0;"
    
' Ouvre le catalogue
  Set cat.ActiveConnection = source
  
  For Each feuil In cat.tables
        If feuil.Name = onglet & "$" Then
            trouve = True
            Set source = Nothing
            Set cat = Nothing
            Exit Sub
        End If
  Next
' fermeture
  Set source = Nothing
  Set cat = Nothing
End Sub
 
Dernière édition:

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Bonsoir tout le monde,

Michel merci 1000 fois pour cette macro qui pmarche à merveille !

Pour les différents posts, je ferai attention la prochaine fois, mais en effectuant mes recherches, j'ai trouvé des infos qui correspondaient à ce que je recherchais : je ne ferai ma demande que dans un seul post dorrénavant.

Merci encore et bonne fin d'après-midi !

Elokapo
 

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Re bonsoir

J'ai encore une toute dernière question sur ce post : les noms de mes onglets sont assez longs, mais ils commencent tous par LUXXXX (X variant à chque fois) puis du texte (ex: 'LU4111 - Le nom de cette info')

Dans cette macro, il recherche la valeur exact de l'onglet. J'ai essayé ceci :
Code:
  Workbooks.Open fichier
            Sheets(onglet & "*").Activate

Mais cela ne marche pas. Il faudrait entrer simplement les 5 caractères : LUXXXX (X variant à chaque fois)

J'éspère m'être bien fait compris ! ;) Sinon pas grave ! Je chercherai sur le forum !

A bientot !
 

michel_m

XLDnaute Accro
Re : Ouvrir un fichier contenant un onglet préchoisi

bonjour

essaies (je n'ai pas testé)

au lieu de:
If feuil.Name = onglet & "$" Then

if left(feuil.name,5)=onglet then

bien que LUXXXX fasse 6 caractères mais...
 
Dernière édition:

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Bonjour,

Cette fonction marche partiellement (contrairement à ce que je pensais et avias écrit !)

En fait il bloque la dessus :

If trouve = True Then
Workbooks.Open fichier
Sheets(onglet).Activate

Il ouvre bien le bon fichier mais ne se met sur le bon onglet, car 'onglet' correspond aux 6 premières lettres seulement de l'onglet.

Si vous avez la ou une autre solution, merci à vous !

Elokapo
 
Dernière édition:

michel_m

XLDnaute Accro
Re : Ouvrir un fichier contenant un onglet préchoisi

Bonsoir,

à la place de:
Sheets(onglet).Activate

essaies (attention c'est sensible à la casse!)
dim cptr as byte
....
For cptr = 1 To Worksheets.Count
If Left(Sheets(cptr).Name, 5) = onglet Then
Sheets(cptr).Activate
Exit For
End If
Next
 

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Voici le code complet :

Private fichier As String
Private onglet As String
Private chemin As String
Private trouve As Boolean

Sub fouiller()

Dim cptr As Byte

'force dans le répertoire de travail
onglet = InputBox("nom de l'onglet ?")

If onglet = "" Then: Exit Sub
chemin = "C:\Documents and Settings\HP_Administrateur\Mes documents\Mon Boulot\Boulot résussi"
ChDir chemin

' on réduit la sélection en utilisant un joker "*"
fichier = Dir("*.xls")
While fichier <> ""
inspecter
If trouve = True Then
Workbooks.Open fichier
For cptr = 1 To Worksheets.Count
If Left(Sheets(cptr).Name, 6) = onglet Then
Sheets(cptr).Activate
Exit For
End If
Next
Exit Sub
End If
fichier = Dir
Wend

End Sub

Sub inspecter()

Dim source As Object
Dim cat As Object
Dim feuil

fichier = chemin & "\" & fichier

' Initialisation
Set source = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")

' ouvre la connection
source.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & fichier & ";Extended Properties=Excel 8.0;"

' Ouvre le catalogue
Set cat.ActiveConnection = source

For Each feuil In cat.tables
If Left(feuil.Name, 6) = onglet Then
trouve = True
Set source = Nothing
Set cat = Nothing
Exit Sub
End If
Next

' fermeture
Set source = Nothing
Set cat = Nothing

End Sub
 

elokapo

XLDnaute Junior
Re : Ouvrir un fichier contenant un onglet préchoisi

Rebonjour tout le monde,

En fait, la macro ci-dessus fonctionne très sur ma version excel, mais au boulot, sur excel 2003, il y a un bug (et d'ailleurs cela vaut pour toutes mes autres macros), c'est qu'il faut définir chaque variable !!!

On ne peut plus simplement écrire par exemple : feuil = inputbox("...") mais il faut prédéfinir comme ceci : dim feuil as String par exemple !

Alors sur la macro ci dessus, je bloque sur la variable feuil qui n'est pas définit.

Si quelqu'un pourrait d'aider svp j'en serai ravi ! J'ai essayé avec variable, oui qqch comme DOX.table (je pense me tromper) mais cela ne fonctionne pas !

A très bientot !
Elokapo
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet