PB excel cellule qui s'agrandiss aprè requête

mïkelkel -  
 mïkelkel -
Bonjour,
Voila mon problème: J'ai créé une interface excel qui exécute des requêtes SQL (MS Query). Ces requêtes sont lancées par des macros associées à des boutons. Le soucis, c'est quand j'obtiens le résultat de la requête dans la feuille, les cellules se redimensionnent par rapport à la taille des cellules résultats. Or je souhaiterais qu'elles se redimensionnent par rapport aux cellules correspondant aux noms de colonnes.

Par exemple, si j'ai ce résultat: 25 , je ne verrais que les deux ou trois première lettre du nom de colonne.

Voici un exemple d'une de mes macros :
Sub nom_macro_Click()
'
' nom_macro Macro
' Macro enregistrée le 20/02/2008 par xxxx????
'
Columns("GC:GC").Select
ActiveWindow.LargeScroll ToRight:=-27
Columns("D:FJ").Select
Selection.ClearContents

Range("B30").Select
ActiveCell.FormulaR1C1 = "nom colonne"
Range("A1").Select

With ActiveSheet.QueryTables.Add(Connection:= _
"FINDER;E:\xxxx\xxxx-xxx\xxxxxx\Microsoft\Requêtes\xxx\nom_macro.dqy" _
, Destination:=Range("B31"))
.Name = "nom_macro"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=True

End With

End Sub


Voila, si quelqu'un a déjà eu le cas (ou pas!), si quelqu'un a une idée ou une piste, cela me serrait très util.
Cordialement
michael.
A voir également:

5 réponses

mïkelkel
 
Pas de réponses???
je ne pensais pas que c'était une question si difficile!!
manque-t-il des renseignements??
0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
Vous voulez que les colonnes soient redimensionnées en tenant compte de la ligne de titre, plutot que des lignes de données ?
Si vousl sélectionnez manuellement les colonnes et que vous les redimenssionnez en fonction du contenu, cela est-il ok ? Dans ce cas, il suffit d'automatiser cette action.
0
mïkelkel
 
daccord, mais quelle est la procédure??

quand on regarde le script, j'ai renommé mes noms de colonnes, est ce à ce niveau la?
0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
Après le "end with", ajouter :

ActiveSheet.UsedRange.Columns.AutoFit

ou bien

Columns("D:FJ").Columns.AutoFit

en fonction de la section à redimensioner.
0
mïkelkel
 
je pense qu'il sagit seulement de la ligne 30, car c'est à cette ligne que se trouve les entete de colonnes. ce que tu ma donné ne marche pas, meme en essayant de le placer à différents endroit.
moi j'ai trouvé ca :
- ActiveSheet.UsedRange.Columns.AutoFit
- Columns("30:30").Columns.AutoFit
- ActiveSheet.UsedRange.Rows.AutoFit
- Rows("30:30").Select
- Selection.Rows.AutoFit

Bref, n'importe quelle commande (meme les tienne) m'ajuste bien les entete, mais seulement au début! dès que les données s'affichent, les entetes rétrécissent :-(

j'ai cherché une bonne partie de la journée...et rien
0
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
Je pense que c'est à cause de BackgroundQuery:=true.
A cause de cela, le query s'exécute après le autofit.
Peux-tu le mettre à false ? Dans ce cas, le code attendra la fin du query.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 24281 Statut Contributeur Ambassadeur 1 584
 
Si tu veux simplement éviter que le query ne touche à la largeur des colonnes, tu peux simplement mettre AdjustColumnWidth à false.
0
mïkelkel
 
Bonjour, je reviens par ici pour ne pas laisser la discussion inachevé! c'est la moindre des choses, car moi même quand je cherche des infos et que je vois un début de réponse, ca me fou en rogne!!!

Bref, merci de ton aide "yg_be", il fallait bien mettre AdjustColumnWidth à false, mais il faut quand meme rajouter après le end with " ActiveSheet.UsedRange.Columns.AutoFit pour que cela fonctionne. il doit y avoir d'autre méthode, mais celle ci fonctionne, j'ai bien un ajustement automatique de la taille de mes entetes de colonnes.

ps: par contre, après avoir fait ça, ce sont mes données qui ne s'ajuste pas correctement si la taille d'une ligne de données est plus grande que le nom de colonne. Pour y remédier je me réfère au résultat le plus grand en taille de caractères, puis j'ajuste la taille de la colonne manuellement avec cette commande : Columns("B:B").ColumnWidth = 15 (juste après ActiveSheet.UsedRange.Columns.AutoFit). Au pire, si ca ne va toujours pas, directement dans la feuille courante, un cliqué/glissé sur la taille de la colonne et voila!!! :-D

j'espère que ca aidera quelqu'un d'autre!! merci à+
0
yg_be Messages postés 24281 Statut Contributeur 1 584 > mïkelkel
 
As tu changé BackgroundQuery:=true ?
A cause de cela, le query s'exécute pendant que le reste du programme tourne.
Peux-tu le mettre à false ? Dans ce cas, le code attendra la fin du query.
0
mïkelkel > yg_be Messages postés 24281 Statut Contributeur
 
non je n'ai pas changé backgroundquery, et en le changeant, cela ne fait rien de plus!! mais je n'est pas compris la, quelle est le but de le mette à false?? si je le met à false, ca devrait ajuster aussi la taille des colonnes en fonction du résultat sous les entete de colonnes??

ps: je ne vois pas où je peux changer le statut de la discussion afin de le mettre à "résolu" sachant que je suis en utilisateur anonyme...
0
yg_be Messages postés 24281 Statut Contributeur 1 584 > mïkelkel
 
Quand backgroundquery est true, le code VBA continue et la mise à jour des données à partir du query se fait en arrière plan.
Si backgroundquery est false, le code VBA attend que le query se termine avant d'executer les instructions après le query.
Si tu veux ajuster les largeurs de colonne en fonction du résultat du query, il vaut mieux le mettre à false.
0
mïkelkel > yg_be Messages postés 24281 Statut Contributeur
 
je suis daccord, mais comme je disais, quand je le met à false, cela ne change rien au résultat, meme quand je retire la taille des entetes de colonnes que j'ai mis manuellement, bref le principal est que j'ai à quelque chose pret ce que je voulais!!

aussi, je ne vois toujours pas où changer le statut de la discussion

merci pour tout
0