![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir le Forum,
Avec l'aide de Michel_M qui ma énormement aidé sur cette appli et je l'en remerci encore j'ai encore un petit problème . Au départ ma ListBox n'avait qu'une colonne je voudrais la transformer en 3 colonnes ( ou + ci cela est nécéssaire ). j'ai redéfini la plage mais ça ne fonctionne toujour pas . En modifiant un peu le code les 3 colonnes de la feuille étaient réunis en une dans la ListBox donc ça ne fonctionne pas comme je le souhaiterais . Un grand MERCI à tous ceux ou celles qui pourront me donner un petit coup de main . Riri |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Riri, J'ai été voir sur le site de F.sigonneau et il précise : 'nécessite une référence aux librairies : '- Microsoft ActiveX Data Objects 2.x Library '- Microsoft ADO Ext.2.x for DDL and Security Library Qui ne figurent aparemment pas dans ton projet. Ceci vient peut être de cela. Cordialement. JJ |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Jean-Jacques, Ils n'apparaisse pas dans le projet , les références sont cocher dans : (Outils | Réferences de l'éditeur VBE. x = dépend des versions d'Office) - Microsoft ActiveX Data Objects 2.x Library - Microsoft ADO Ext.2.x for DDL and Security Library Sur les conseils de Michel_M Donc j'ai cocher les deux références , mais je pense que cela doit venir du côde car pour une colonne ça fonctionne très bien je récupère bien la colonne dans la Listbox , mais pour 3 colonnes dans la feuille je ne récupère qu'une colonne dans la ListBox et moi je voudrais récupére les 3 . Encore Merci pour ton aide @ + Riri |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
bonsoir Riri bonsoir Jean-Jacques
si j'ai bien compris ta demande pour obtenir une ListBox multicolonnes , tu peux tester l'adaptation ci dessous dans la procedure "Private Sub CbxFeuille_Change" : Private Sub CbxFeuille_Change() Dim source As ADODB.Connection Dim requete As ADODB.Recordset Dim onglet, zone As String Dim X As Long Dim Tableau() LbxDonnees.Clear ReDim Preserve Tableau(2, X) onglet = Me.CbxFeuille.Value zone = "A1:C30000" Set source = New ADODB.Connection source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "data source=" & fichier & ";" & _ "extended properties=""Excel 8.0;""" Set requete = New ADODB.Recordset Set requete = source.Execute("SELECT * FROM `" & onglet & zone & "` WHERE nom <>"""";") If requete.EOF Then ' astuce d'après @+Thierry xld MsgBox "Plage vide..." Exit Sub End If With requete .MoveFirst Do While Not .EOF Tableau(0, X) = .Fields(0) Tableau(1, X) = .Fields(1) Tableau(2, X) = .Fields(2) X = X + 1 ReDim Preserve Tableau(2, X) .MoveNext Loop End With requete.Close source.Close LbxDonnees.Column() = Tableau End Sub bonne soirée MichelXld |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Riri, Jean Jacques, Michel et le forum
Un Michel relaie l'autre, c'est ce qui il y a de bien sympa sur ce forum; les Michel(s), bien sûr (lol), mais surtout le suivi des pb et l'apport de chacun; chacun amène sa petite pierre à l'édifice.... D'ailleurs, je vais essayer le truc des multicolonnes que je ne connaissais pas: heureusement, Riri, que tu l'avais oublié sur l'autre post ! Amicalement à tous les 3 et aussi au forum Michel |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Michel , Michel_M , Jean Jacques , et le Forum Tout d'abord merci Michel pour la modif qui fonctionne très bien . Malheureusement j'ai constaté quelques erreurs en voulant changer le nom des feuilles par exemple . Exemple la feuille ( Classeur1 les autres aussi ) fonctionne mais si je la renome Classeur devis1 ça ne fonctionne plus le code ne reconnait pas les espace dans les feuilles . De plus en voulant changer les données dans les feuilles la aussi des erreurs surviennent tout en gardant la même zone de travail et pourtant je n'ai fait que changer les données ! Bizarre !!! Ce qui m'étonne , l'appli t'elle qu'elle est fonctionne , mais dès que l'on modifie une donnée ou le nom d'une feuille là j'ai une erreur . Ci vous pouviez me renseigner ça serai sympa Encore MERCI pour votre aide @ bientôt sur le Forum Riri |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Re Riri, Jean jacques, Michel et le forum
En ce qui concerne les espaces dans les noms d'onglets, j'ai trouvé cette solution sur une demo de Robert Dezean sur Excelabo : "RD lecture données fichier fermé" à télécharger d'urgence pour ce genre de problème . Merci à lui. For Each xlSheet In cat.Tables nombrut = xlSheet.Name 'élimination des "$" d'après Robert Dezean/ Excelabo (merci) If Right(nombrut, 1) = "$" Then ''' Les noms de feuille se terminent toujours par un "$" nomcorrige = Left(nombrut, Len(nombrut) - 1) ElseIf Right(nombrut, 2) = "$'" Then ''' sauf les noms de feuille avec des espaces (renvoyés entre apostrophes) -fs nomcorrige = Mid(nombrut, 2, Len(nombrut) - 3) ' on remplit la liste déroulante des feuilles Me.CbxFeuille.AddItem (nomcorrige) End If Next Dans la macro cbxfeuillechange La ligne devient Set requete = source.Execute("SELECT * FROM `" & onglet & "$" & zone & "` WHERE nom <>"""";") En ajoutant le dollar entre onglet et zone Et d'un… En ce qui concerne les noms de champs dans les feuilles, SQL a horreur des espaces comme par exemple: "date de naissance" il faut alors mettre ce champ entre guillemets du style ["date de naissance"] si ton nom de champ comporte des apostrophes comme "d'icioulà" il faut alors utiliser la fonction "replace" noble="d'icioula" replace(noble,"'","''") 2) param lire guillemet, apostrophe,guillemet 3° param lire guillemet, apostrophe, apostrophe, guillemet Un autre truc que j'ai vu il faudrait réduire le nombre de listrow des combobox au nombre de classeurs: j'ai planté en cliquant sur une ligne vide du cbxclasseur. N'hésites pas à redemander, Ce pb m'intéresse car j'y cherche, cogite et découvre… Michel |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
Re
Petite étourderie, au lieu de: ' on remplit la liste déroulante des feuilles Me.CbxFeuille.AddItem (nomcorrige) End If écrire: End If ' on remplit la liste déroulante des feuilles Me.CbxFeuille.AddItem (nomcorrige) Michel |
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Michel_M , Je vois que tu est intérressé par se petit problème , moi aussi . Merci pour ton aide , c'est vraiment sympa de ta part , je vais tester les modifs et je te tiens au courrant du résultat . Encore merci pour ton aide est ta recherche . @ + sur le Forum Riri |
|
|
#10 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Riri, Michel, Michel et le forum, J'arrive après la bagarre et je constate que vous avez super avancé. Par contre moi j'en étais resté, juste avant de quitter mon PC, en rade au niveau de l'instruction : source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "data source=" & fichier & ";" & _ "extended properties=""Excel 8.0;""" ou j'ai un message : "ADO n'a pu trouver le fournisseur spécifié" d'ou l'objet de mon post .....d'hier à l'heure de l'apéro. J'ai repris la main il y a deux heures et fais mes courses à droite et à gauche y compris sur la gestion d'erreur ADO chez microsoft et n'ai pas trouvé la réponse ( j'ai toujours droit au même message et n'ai pas la traduction). J'ai enfin découvert le travail de michel_M sur le sujet ainsi que celui des ténors du forrum , c'était il y a peu de temps... mais n'ai pas détecté un début de piste. Ma version d'excel est la 8.0a , ce qui m'a conduit à tester "source.Open.....Excel 8.0a;", mais sans plus de résultat. Quelqu'un de vous a-t-il une explication ou une piste pour que je puisse voir ce que vous voyez tous... Merci d'avance et bien cordialement. JJ |
|
|
#11 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Jean-Jacques, Riri, Michel
quelle version d'Excel possède tu ? les connections ADO n'ont jamais été testé avec XL2003 sur ce forum j'ai coché Microsoft ActiveX Data Objects 2.0 Library (et non 2.1) mais je n'ai pas coché Microsoft ADO Ext.2.x for DDL and Security Library qui me parait inutile en mono-utilisateur (je dis bien qui me parait...) J'en profite pour joindre mon boulot sur les noms d' onglets avec espace: j'ai changé interface en home-riri pour éviter les confusions de fichiers et il n'y a plus qu'un seul classeur le pb de la liste des classeurs étant résolu. Enfin, petit rappel:La démo de Robert Dézean citée précédemment est très intéressante car pédagogique A demain pour de nouvelles aventures Michel |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Michel, Riri, Michel, et les Forumeurs dominicaux, Je te remercie de tes explications Michel, toutefois la solution est ailleurs si elle n'est pas tout simplement dans une réinstal d’excel d’une version qui à fait ses preuves avec l’appel à ADO. Aussitôt réveillé j'ai testé ton fichier et j'ai droit au sempiternel "ADO n'a pu trouver le fournisseur spécifié". J'avais déjà essayé toutes les combinaisons de références incluant "Microsoft ADO Ext.2.x for DDL and Security Library" et n'avait pas obtenu de résultat. La version d’excel est « 97 » - s’affiche à l’ouverture - et lorsque je fais MsgBox Application.Version, il me répond : « 8.0a » pour une réponse précise à ta question concernant la version. Comme je l’explique dans mon précédent post j’ai fait une recherche sur « Microsoft.Jet.OLEDB.4.0 » qui m’a conduite dans différents forums très techniques et enfin sur celui de Microsoft…et n’ai rien trouvé de réellement explicite sur ce cas de figure...y compris des codes Microsoft de gestion d’erreur qui ne mènent nulle part….j’ai enfin fini sur excel download par ou je commence habituellement ou je suis tombé sur différents échanges (ou tu était déjà omniprésent) sur ce sujet. J’ai aujourd’hui des appli qui fonctionnent très bien en ouverture / fermeture de fichiers y compris en réseau mais j’aimerai muter vers de l’échange fichiers fermés…et cela passe aussi par la réponse à ce blocage. Sur ce un petit tour au marché avant de retrouver mon clavier pour peut être un nouvel épisode de "ADO et les versions rebelles"….. Je vous souhaite à tous un bon dimanche . JJ |
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
bonjour Riri , Jean-Jacques et Michel
Michel , merci pour toutes ces infos complémentaires lors de mes tests , je n'avais modifié qu'une ligne dans le fichier d'origine de Riri , pour travailler sur des onglets contenant des espaces onglet = Application.WorksheetFunction.Substitute(CbxFeuill e.Value, "'", "") sans toucher au reste de la procédure ( mais je n'ai peut etre pas testé tous les cas de figure ) Jean-Jacques , je viens de tester les classeurs avec Excel97 ( version 8.0a ) & Win98 et tout fonctionne bien , sans message d'erreur bon dimanche MichelXld |
|
|
#15 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Michel_M , Michel , Jean Jacques et le Forum , Merci à vous , vous avez fait un remarquable boulot et je tiens à vous féliciter . Je viens de tester la dernière version de Michel_M , tous fonctionne très bien , l'alimentation des comboBox se déroulent sans problème , plus d'erreur de ce coté là , le problème des espace est résolu. Par contre en ajoutant un classeur supplémentaire il apparait bien dans la liste ainsi que ses feuilles , mais lorsque je sélectionne une feuille de ce classeur voici le message d'erreur que j'obtient . -Aucune valeur donnée pour un ou plusieurs paramètres requis. -Erreur d'execution '-2147217904 ( 80040 e 10 ) ' : Fichier joint avec le classeur supplémentaire. Bon Dimanche à vous , je reste à l'écoute de ce post qui m'intérresse beaucoup . Riri |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|