BOUCLE SUR FEUILLES D'UN CLASSEUR FERME

I

IFFIC

Guest
Bonsoir à tous d’ici, à qui je dois le bonheur de me vider la tête en bidouillant VBA. et damer le pion à ceux qui pensent que passé 50 balais, il n’y a que les autocars qui conduisent au rêve.

Je pense que ma demande sera super simple pour les supers pros du Forum.
Sauf qu’à m’expliquer, c’est pas d’la tarte !!!

Voici un bout de mon maquereau :

Private Sub UserForm_Initialize()
With ListBox1
ListBox1.Clear
FEUILLE = " 'C:\COMMANDES\FOURNISSEURS\[FRS]FRN"
NOFOURN = 1
For j = 7 To 300 ‘ Déjà là , un End(xlUp).Row , j’aimerais bien.
CODE = ExecuteExcel4Macro((FEUILLE & NOFOURN) & "'!R" & j & "C" & 1)
DESIGNATION = ExecuteExcel4Macro((FEUILLE & NOFOURN) & "'!R" & j & "C" & 2)
ListBox1.AddItem DESIGNATION & " " & "Code: " & " --> " & CODE
Next j
End With
End Sub

Dans le classeur fermé, j’ai une quantité de feuilles que j’ai intitulé : « FRN1 , FRN2, et c.
Jusque là, cela fonctionne., ayant auparavant récupéré dans une autre Listbox la variable
« NOFOURN ». en faisant une boucle dans une feuille du même classeur récapitulant la
liste des fournisseurs, par ordre numérique.

Je pense qu’il serait beaucoup plus simple de laisser l’utilisateur créer une nouvelle feuille
au nom d’un nouveau fournisseur, sans l’obliger de devoir la répertorier dans la dite liste.

En fait, je cherche un truc du genre :

FEUILLE = " 'C:\COMMANDES\FOURNISSEURS\[FRS]"
For Each wks In (L’adresse ci-dessus)
ListBox1.AddItem wks.Name
Comme je le fais avec: Worksheets("Feuil1").Cells(10 + t1, 3) = wks.Name
t1 = t1 + 1
Next wks

Simple: Faire une boucle sur les feuilles d’un classeur fermé!!!!!!!

Merci d’avance, et bonne longue fin de semaine à tous.

IFFIC
 
M

michel

Guest
bonjour Iffic

tu peux tester cet exemple pour boucler sur les feuilles d'un classeur fermé


Sub boucleFeuillesFichierFerme()
'd'après Ramesh, microsoft.public.data.ado
Dim XlConnect As Object, XlCatalog As Object
Dim Fichier As String, Resultat As String
Dim Feuille As Object

Fichier = "C:\Documents and Settings\michel\fichier test.xls"

Set XlConnect = CreateObject("ADODB.Connection")
Set XlCatalog = CreateObject("ADOX.Catalog")

XlConnect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
Set XlCatalog.ActiveConnection = XlConnect

For Each Feuille In XlCatalog.Tables
Resultat = Application.WorksheetFunction.Substitute(Feuille.Name, "$", "")
Resultat = Application.WorksheetFunction.Substitute(Resultat, "'", "")

MsgBox Resultat
'ListBox1.AddItem Resultat
Next

End Sub


bonne journée
MichelXld
 
M

Michel_M

Guest
Bonjour Iffic, Bonjour Michel

Iffic,

En regardant ton post, ma suggestion est la suivante:

La complexité de ton appli vient, à mon avis, de:

Tu emploies 1 classeur pour N fournisseurs : pour ma part, j'aurais installé N classeurs (1 par fournisseur)

en effet:
1/ton classeur "1 x N" est lourd donc long à ouvrir , à manipuler et à enregistrer ce qui explique ta demande "classeur fermé"(si l'appli est sur serveur, tu as le temps de faire la sieste...)
2/si "1 x N" est corrompu pour une raison ou une autre, c'est l'ensemble des catalogues "fournisseurs" qui est perdu (bonjour, l'ambiance dans ta boutique)
3/ avec "N x N" je peux modèliser une fiche fournissseur et surtout nommer la zone à copier dans la listbox.

ta prog serait alors simplifiée
la liste des fournisseurs pourrait être obtenu par une recherche de fichiers dans un répertoire avec la fonction "dir" de vba
la recherche des codes et désignation pourrait être effectuée suivant 2 méthodes suivant l'importance de la nomenclature soit fichier ouvert si peu de codes( tableau intermédiaire) soit fichier fermé (ado+sql) si nombreux codes

Ci joint une petite démo(ado+sql) avec 2 classeurs-fournisseurs; FRN2 présentant 1800 articles…
La macro de recherche des fichiers n'a pas été faite mais c'est presque tout fait dans l'aide microsoft

Avec ADO, démos de Michel XLD et la mienne il faut IMPERATIVEMENT cocher microsoft activeX Data object 2.x library dans le sous menu "références" de "outils" de l'éditeur VBA

A+

Michel
 

Pièces jointes

  • iffic.zip
    46.8 KB · Affichages: 100
I

IFFIC

Guest
Merci à vous deux Michels.

Cela fait plein de trucs dedans que vous ayez pris la peine d'investir ce temps pour m'aider.

Coté méthode ADO, j'ai entrevu lors de mes recherches dans les Posts XLD traitant du sujet qu'il faudrait que bientôt j'y vienne.

Mon certificat d'étude est un peu loin, je vais devoir y aller petit à petit.

Je vais opter pour l'instant sur l'ouverture temporaire du fichier contenant les données, et en récupérer dans des variables après boucles "wks.name" le nom des feuilles.

1) De ne pas créer un classeur par fournisseur aide, je pense,
à la lecture de l'arborescence du dossier (Je n'ai pas que des
pros dans mon groupe)
2) Je me vois mal intervenir sur les huit postes du réseau interne
pour valider les "actives machins" D'autant que ma direction
Bicéphale issue d'une école de la terre n'aime pas trop que je
touche à leur unité super ergonomique…dont ils n'utilisent que
le "Format cellule.bordure" et les "A1*A2" avec couleur pour
faire plus joli!
Et en plus, je ne suis pas certain que VBA, y soit installer.

Un p'tit truc me vient à l'esprit: Et s'il était possible par une macro de mon poste valider les "ActivXDataObjets2.librairy sur le pare-brise de leur tracteur... Hein! Ce serait pas mal?

Je suis dans un monde qui a acheté une entreprise avec la vente des terres de la mémé qui a rejoint son mec sympa qui est mort pour nous
en 14.!!!

A Michel ou Michel, J'ai été un peu stomaqué que vous ayez deviné que j'étais en réseau…
Je souhaite à vous deux aussi beau soleil qui baigne ma Bretagne du sud en ce bel après midi.

Bon milieu de fin de semaine à vous.

Merci encore pour votre gentillesse.

IFFIC
 

Discussions similaires

Statistiques des forums

Discussions
313 060
Messages
2 094 924
Membres
106 127
dernier inscrit
AS PRECY