PB excel cellule qui s'agrandiss aprè requête
mïkelkel
-
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.
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:
- PB excel cellule qui s'agrandiss aprè requête
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne dans une cellule excel - Guide
5 réponses
Pas de réponses???
je ne pensais pas que c'était une question si difficile!!
manque-t-il des renseignements??
je ne pensais pas que c'était une question si difficile!!
manque-t-il des renseignements??
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.
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.
Après le "end with", ajouter :
ActiveSheet.UsedRange.Columns.AutoFit
ou bien
Columns("D:FJ").Columns.AutoFit
en fonction de la section à redimensioner.
ActiveSheet.UsedRange.Columns.AutoFit
ou bien
Columns("D:FJ").Columns.AutoFit
en fonction de la section à redimensioner.
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si tu veux simplement éviter que le query ne touche à la largeur des colonnes, tu peux simplement mettre AdjustColumnWidth à false.
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 à+
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 à+
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...
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...
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.
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.
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
aussi, je ne vois toujours pas où changer le statut de la discussion
merci pour tout