![]() |
|
Forum
|
|
|
#46 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
Bonsoir à tous,
Je regarderai plus longtemps tes liens et propositions Michel_M, car je sais d'avance que c'est sûrement très interressant, mais je suis à la bourre au bureau. Pour Sylvie, heureux que tout ai marché comme prévu ! Pour ce qui est de ma part, j'ai testé en réseau la Version V01.00 sur 800 fichiers hyper structurés (Fabriqués automatiquement), Mais sans savoir combien de lignes sur chacun je devais scanner (je connaissais juste le nombre de colonnes, qu'en ADO on dénommera plutôt 'Champs' (Field)) J'ai donc testé 'A2:K500' en Range... Avec le nom de la Feuille Adéquate... 'Ca peut aller' ... mais il y avait encore des 'chti'-bugs par-ci par là... (Non non Jean-Marie je ne t'ai pas appelé !! lol) Et comme le disais très justement, Michel_M, il ne faut surtout pas qu'un des Classeurs soit Ouvert (sur la WorkStation, mais en réseau aussi...) Donc j'ai récupéré une Function que j'avais collaboré à mettre au point pour un test de Lecture de Fichiers en Réseau avec Frédérique Sigonneau à l'époque sur le MPFE... Voici donc une Version 01.01 un peu plus bétonnée... (Enfin j'espère !! lol) Bonne Soirée @+Thierry [file name=USF_ADO_Calculs_Collector_V01_01.zip size=46947]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/USF_ADO_Calculs_Collector_V01_01.zip[/file] |
|
|
|
| ANNONCES | |||
|
|
|
|
#47 (permalink) |
|
XLDnaute Accro
Date d'inscription: mars 2005
Localisation: Lyon
Messages: 1 211
|
Re Bonjour Thierry, Le forum
comme je te l'ai dit en tout début d'après midi pas de souci pour faire tourner ton userform sur Windows XP. Par contre cet après midi il est resté muet sur un pC equipé de Windows 98 SE. Aucun message d'erreur. Rien ! Michel a évoqué des problèmes de bibiothèques à modifier.... peux tu m'indiquer où je dois faire cette manip le cas échéant ? Merci Excellente soirée Sylvie
__________________
|
|
|
|
|
|
#48 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 128
|
rere
At home avec Win98 et XL 2000 il faut 'décocher' les références Signalées 'MANQUANT' dans outils-références de VBE , cliquer sur OK et redemander outils références: Cocher alors Microsoft activeX Data objet 2.1 library Et Microsoft ADO ext. 2.1 for DDL and security C'est ce que je signalais cet après-midi au boulot Je joins l'appli indice 02 avec ces références de bibliothèques; normalement une version ultérieure Win et/ou XL absorbera la 'vieille' reférence. A vérifier bien sûr A+ Michel [file name=USF_ADO_Calculs_Collector_V01_02.zip size=34594]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/USF_ADO_Calculs_Collector_V01_02.zip[/file]
__________________
A+ Michel_M Dernière modification par michel_m ; 21/07/2007 à 00h53. |
|
|
|
|
|
#49 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
Bonjour Michel_M, Sylvie, le Forum
Merci Michel, je viens de faire tourner sous un vieux coucou avec WinME et Office Standard 2000, çà marche avec ton Fichier qui pointent sur des librairies 'vétustes' (lol) Voici l'état de ma fenêtre Référence Blibliothèques dans le menu VBE (Visual Basic Editor) Menu => Outils => Puis 'Références' (Pour Sylvie) PC Win Me / Office 2000 : Ouverture Directe du Fichier Sauvé par Michel_M (OK) ![]() Tu dois trouver (Sylvie) selon le PC des référence 'MANQUANTES' dans cette liste... Tu les Décoches et tu cherches ensuite la même référence mais avec une Version plus ancienne... Logiquement le Fichier tel que Michel l'a paramétré devrait être absorbé par des Machines plus anciennes, le seul 'Hic' c'est au cas ou le fichier circule entre diverses configurations... En effet... PC Win XP S/P2 / Office Pro 2003 Ouverture Directe du Fichier Sauvé par Michel_M (OK) ![]() Je sauve ce Fichier avec Office 2003... Je réouvre sous l'autre bécanne (heureusement suis en réseau chez moi )PC Win Me / Office 2000 : Ouverture du Fichier Sauvé par Office 2003 (PAS OK) ![]() Par conséquent, je décoche cette librairie manquante et je referme cette boite de dialogue (important, sinon on ne trouvera pas la 'Microsoft ADO ext. 2.x for DDL and security' dans la liste si on ne referme pas) Pouis je ré-ouvre dans VBE Menu => Outils => 'Références' et je peux cocher comme suit : ![]() Sacrée gymnastique ! lol Donc par conséquent, il vaut mieux, dans le cas de ce genre de programme qui ne fait que récolter de l'info à la volée, en faire autant de copie que de PC avec configurations différentes.. Car le sens descendant change la référence... Quand j'aurai 5 minutes (pas prèt d'arriver lol) je regarderrai le coup de la 'Liaison Tardive) si ça peut se faire pour cette library !! Bon apétit ! (et oui c'est fête ici lol) @+Thierry |
|
|
|
|
|
#50 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Thierry et Sylvie
Bon repos, Thierry ! Sylvie, si tu passes dans le coin... Comme je ne sais pas incorporer des images dans un post Ci joint constatation lucide et sage de 2 champions de 'provencale', ton passe-temps favori; après Excel, bien entendu Amicalement Michel |
|
|
|
#51 (permalink) |
|
Guest
Messages: n/a
|
Ta procédure est trés interressante, mais je voudrais récupérer sur la feuille source la dernière cellule non vide de la colonne A.
J'ai pas réussi à écrire le code. Pourrais-tu m'aider. Merci d'avance à +. |
|
|
|
#52 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
Bonsoir Modus, Michel_m; MichelXLD, Sylvie
Ben modus, c'est que tu n'as pas regardé le code bien en entier, dans le module qui porte mon prénom, tu as un moyen de le faire...(par contre probablement pas le plus directe, mais là je laisse la place aux 'jeunes ados' (lol) Bonne Soirée @+Thierry |
|
|
|
|
|
#53 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2005
Messages: 21
|
Bonjour je suis assez débutant en vb
j'ai regarder votre super démo et j'aimerais bien en utiliser une partie Ce que je veux c'est de pouvoir ouvrir plusieurs fichiers qui se trouvent dans un répertoire. j'ai déja une macro qui compte le nombre de fichier et ouvre les fichiers pour un répertoire fix (voir macro plus bas. Mais j'aimerais avoir un formulaire qui demande quel répertoire et pouvoir avoir le choix d'ouvrir seulement 1 ou plusieur fichier. Donc la partie 1 et 2 de votre super démo fait exatement ce que je veux. Il reste juste a faire ouvrir mes fichiers. Je suis certain qu'il ne manque pas grand chose. Si quelqu'un pouvais m'aider win98se excel 2000 (maison) xp (au travail) Sub ChercheetOuvreFichier() Set fichcherche = Application.FileSearch With fichcherche ' .LookIn = GetDirectory .LookIn = 'c:\\julie' .Filename = '*.z' (format de mes fichier) If .Execute > 0 Then MsgBox .FoundFiles.Count & ' Fichier(s) a (ont) été trouvé(s).' For I = 1 To .FoundFiles.Count Workbooks.Open Filename:=.FoundFiles(I) Cells.Select Selection.Columns.AutoFit ActiveWindow.LargeScroll Down:=4 Range('K142').Select On Error Resume Next Next I Else MsgBox 'Aucun fichier n'a été trouvé.' End If End With End Sub |
|
|
|
|
|
#54 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 830
|
bonjour à tous
modus57 , tu peux tester cette macro pour récuperer la derniere donnée de la colonne A , dans la feuille 'Feuil1' , du classeur fermé Code:
Sub derniereDonnee_ColonneA()
'nécessite d'activer la référence Microsoft ActiveX Data Object 2.x Library
Dim Rs As ADODB.Recordset
Dim Cn As String
Dim Cible As String
Dim Fichier As String
Fichier = 'C:\\Documents and Settings\\michel\\excel\\test.xls'
Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _
'ReadOnly=1;DBQ=' & Fichier & ';' & _
'extended properties=''Excel 8.0;'''
'requete dans la feuille nommé 'Feuil1'
Cible = 'SELECT * FROM [Feuil1$];'
Set Rs = New ADODB.Recordset
Rs.Open Cible, Cn, adOpenKeyset
If Not Rs.EOF Then
'récupère la derniere donnee du 1er champ ( colonne A )
Rs.Move (Rs.RecordCount - 1)
MsgBox Rs.Fields(0).Value
End If
Rs.Close
Set Rs = Nothing
End Sub
Chemist , il vaut mieux que tu ouvres un nouveau fil de discussion pour ta question car la demo de Thierry consiste à récupérer les données sans ouvrir les classeurs tu trouveras aussi de nombreux exemples en utilisant le moteur de recherche du forum 1ere génération http://www.excel-downloads.com/html/...search.php?f=1 bonne journée MichelXld |
|
|
|
|
|
#55 (permalink) |
|
Guest
Messages: n/a
|
Bonjour à tous
Merci Michel c'est sympa, réponse ultra rapide, petit hic! quand je teste ça bug sur: Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _ 'ReadOnly=1;DBQ=' & Fichier & ';' & _ 'extended properties=''Excel 8.0;''' Est-il possible d'imbriquer cette procédure avec ta procédure ci-dessous récupérée sur le forum comportant un ligne légèrement modifiée: Sub TheADOReader() Dim XLFile As String Dim RangeSource As String Dim ADOConnection As ADODB.Connection Dim ADOCommand As ADODB.Command Dim ADORecordSet As ADODB.Recordset XLFile = ThisWorkbook.Path & '\\classeurFerme.xls' RangeSource = 'A1:A5' Set ADOConnection = New ADODB.Connection ADOConnection.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _ 'Data Source=' & XLFile & ';' & _ 'Extended Properties=''Excel 8.0;HDR=No;'';' Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = ADOConnection .CommandText = 'SELECT * from [' & RangeSource & ']' End With Set ADORecordSet = New ADODB.Recordset ADORecordSet.Open ADOCommand, , adOpenKeyset, adLockOptimistic Set ADORecordSet = ADOConnection.Execute('[' & RangeSource & ']') With Sheets('Feuil1') 'LIGNE MODIFIEE .Range('A65536').End(xlUp).Offset(1, 0).CopyFromRecordset ADORecordSet End With ADORecordSet.Close ADOConnection.Close End Sub J'ai du mal avec les ADO, merci ciao à + modus57 |
|
|
|
#56 (permalink) |
|
XLDnaute Accro
Date d'inscription: février 2005
Localisation: Aubenas
Version Excel : Excel 2000 (PC)
Messages: 1 128
|
Bonjour à Tous,
Michel: Dans la démo ci dessus tu affectes la connection XL par un string 'DRIVER={Microsoft Excel Driver (*.xls)};' & _ 'ReadOnly=1;DBQ=' & Fichier & ';' & _ 'extended properties=''Excel 8.0;''' ligne que je ne connais pas; il semble que l'on se passe du moteur jet qui va disparaitre (fil de Thierry il y a quelque temps) ? peux tu m'en dire + là dessus ou m'indiquer un lien ? autre choseavec 'driver': ne faut il pas activer une bibliothèque supplémentaire? Modus, Sans vouloir empiéter sur la Démo de MichelXLd: si tu emploies la proc avec 'jet' que tu proposes, tu remplaces sous la ligne 'LIGNE MODIFIEE' les instructions par celles écrites plus tôt par MIchel If Not Rs.EOF Then 'récupère la derniere donnee du 1er champ ( colonne A ) Rs.Move (Rs.RecordCount - 1) MsgBox Rs.Fields(0).Value End If Rs.Close Set Rs = Nothing en remplacant Rs par ADOrecordset A+ Michel
__________________
A+ Michel_M |
|
|
|
|
|
#57 (permalink) |
|
Guest
Messages: n/a
|
Re Bonjour à tous
Re Merci Michel, c'est de ma faute j’aurais dû te transmettre la procédure intégrale que tu as communiquée ce matin Sub derniereDonnee_ColonneA() 'nécessite d'activer la référence Microsoft ActiveX Data Object 2.x Library Dim Rs As ADODB.Recordset Dim Cn As String Dim Cible As String Dim Fichier As String Fichier = 'C:\\Documents and Settings\\michel\\excel\\test.xls' ‘ QUAND JE TESTE C’EST LA OU CA BUG Cn = 'DRIVER={Microsoft Excel Driver (*.xls)};' & _ 'ReadOnly=1;DBQ=' & Fichier & ';' & _ 'extended properties=''Excel 8.0;''' 'requete dans la feuille nommé 'Feuil1' Cible = 'SELECT * FROM [Feuil1$];' Set Rs = New ADODB.Recordset Rs.Open Cible, Cn, adOpenKeyset If Not Rs.EOF Then 'récupère la derniere donnee du 1er champ ( colonne A ) Rs.Move (Rs.RecordCount - 1) MsgBox Rs.Fields(0).Value End If Rs.Close Set Rs = Nothing End Sub Est-il possible d'imbriquer cette procédure avec la procédure ci-dessous récupérée sur le forum comportant un ligne légèrement modifiée: Sub TheADOReader() Dim XLFile As String Dim RangeSource As String Dim ADOConnection As ADODB.Connection Dim ADOCommand As ADODB.Command Dim ADORecordSet As ADODB.Recordset XLFile = ThisWorkbook.Path & '\\classeurFerme.xls' ‘SOURCE A RECUPERER LA DERNIERE CELLULE NON VIDE DE LA COLONNE A RangeSource = 'A1:A5' Set ADOConnection = New ADODB.Connection ADOConnection.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _ 'Data Source=' & XLFile & ';' & _ 'Extended Properties=''Excel 8.0;HDR=No;'';' Set ADOCommand = New ADODB.Command With ADOCommand .ActiveConnection = ADOConnection .CommandText = 'SELECT * from [' & RangeSource & ']' End With Set ADORecordSet = New ADODB.Recordset ADORecordSet.Open ADOCommand, , adOpenKeyset, adLockOptimistic Set ADORecordSet = ADOConnection.Execute('[' & RangeSource & ']') With Sheets('Feuil1') 'LIGNE MODIFIEE .Range('A65536').End(xlUp).Offset(1, 0).CopyFromRecordset ADORecordSet End With ADORecordSet.Close ADOConnection.Close End Sub J'ai toujours autant de mal avec les ADO, je me documente, bon A.M, re merci ciao à + modus57 |
|
|
|
#59 (permalink) |
|
Guest
Messages: n/a
|
Michel je me suis mal exprimé et je le regrette, en fait j’attendais une réponse de ta part car c’est la 2° fois que participe à un forum.
Ce que je cherche à faire c’est de copier la dernière cellule non vide de la colonne A, de la première feuille d’un classeur fermé, vers la première cellule vide de la colonne A sur la première feuille du classeur actif. Grâce à ta procédure et depuis ton dernier message j’ai trouver la solution ci-dessous : Sub derniereDonnee_ColonneA() 'nécessite d'activer la référence Microsoft ActiveX Data Object 2.x Library Dim Rs As ADODB.Recordset Dim Cn As String Dim Cible As String Dim Fichier As String Fichier = ThisWorkbook.Path & '\\classeurFerme.xls' Cn = 'Provider=Microsoft.Jet.OLEDB.4.0;' & _ 'Data Source=' & Fichier & ';' & _ 'Extended Properties=''Excel 8.0;HDR=No;'';' 'requete dans la feuille nommé 'Feuil1' Cible = 'SELECT * FROM [Feuil1$];' Set Rs = New ADODB.Recordset Rs.Open Cible, Cn, adOpenKeyset If Not Rs.EOF Then 'récupère la derniere donnee du 1er champ ( colonne A ) Rs.Move (Rs.RecordCount - 1) MsgBox Rs.Fields(0).Value End If Range('A65536').End(xlUp).Offset(1, 0).Value = Rs.Fields(0).Value Rs.Close Set Rs = Nothing End Sub Mille fois merci pour ton aide modus57 |
|
|
|
#60 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 830
|
rebonjour Modus , bonjour cher Michel
j'avais découvert cette méthode dans ce lien http://www.erlandsendata.no/english/...dacimportwbado mais je n'ai pas de documentation très précise à ce sujet ( il n'y a pas de bibliotheque supplémentaire à activer ) je ne l'utilise pas souvent , mais tu dois pouvoir trouver quelques exemples sur la wiki page 6 un autres exemple : http://www.excel-downloads.com/compo...d,28649/#28649 bonne soirée MichelXld |
|
|
|
| ANNONCES | |
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|