malo777
Messages postés88Date d'inscriptionjeudi 21 avril 2005StatutMembreDernière intervention13 juin 20131 16 sept. 2012 à 13:56
merci et bravo
10/10
Fullgate
Messages postés4Date d'inscriptionvendredi 23 juillet 2010StatutMembreDernière intervention30 juillet 2010 30 juil. 2010 à 12:23
Bonjour, aider moi dans ce cas vu ke vous avez reussi a executer ce code.
moi j'arrive pas a adapté ce code au mien ...
jai 10 cols dans mon tableau...
Nom de la grille : MSFlexgrid
Merci de m'aider....
adamo901
Messages postés139Date d'inscriptionmardi 18 janvier 2005StatutMembreDernière intervention 8 décembre 2008 21 avril 2007 à 17:24
Je trouve que c'est bizard de noter ce code 9/10 alors qu'il merite simplement 10/10
bravo steph62 et bon courage
ton code m'a beaucoup aidé.
grandmok
Messages postés5Date d'inscriptionmercredi 20 décembre 2006StatutMembreDernière intervention15 octobre 2007 15 mars 2007 à 14:35
Très bon source, c'est exactement ce dont j'avais besoin. Cependant je pense avoir trouvé un petit bug lors du redimensionnement de la hauteur d'une ligne. Celui-ci est fait pour chaque colonne parcourue, ce qui engendre un redimensionnement dès qu'une cellule du datagrid àa plus d'une ligne.
Un exemple :
hauteur de la ligne au départ : 200
1ère cellule : 1 ligne -> hauteur = 200
2ème cellule : 2 lignes -> hauteur 200 *2 400
3ème cellule : 1 ligne -> hauteur = 400
4ème cellule : 2 lignes -> hauteur 400 *2 800
Au final on se retrouve avec une hauteur correspondant à 4 lignes alors que le nombre de lignes maxi est de 2.
Je pense qu'il faut donc gérer une variable correspondant au nombre maxi de lignes dans les cellules et faire le redimensionnement quand tu as parcouru toutes les colonnes.
J'espère que j'ai été clair... En tout cas je te mets 9/10 pour ton source.
cs_titibo
Messages postés2Date d'inscriptionmardi 31 décembre 2002StatutMembreDernière intervention24 octobre 2006 24 oct. 2006 à 17:32
Encore plus simple et logique au lieu de parcourrir les lignes, il suffit de faire une requete avec un recordset où l'ont cherche le max du nombre de caractère max(len(CHAMPS)) et hop ! le tour est joué vous avez le nombre de caractère max sur chaque colonne et plus qu'une ligne à tester.
Zylott
Messages postés104Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention28 septembre 2006 6 juil. 2006 à 12:53
Bjr,
Pour info , il y a mieux :
Private Type Size
cx As Long
cy As Long
End Type
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" _
(ByVal hdc As Long, ByVal lpsz As String, _
ByVal cbString As Long, lpSize As Size) As Long
Public Sub ResizeColumns(hdc As Long, flexgrid As MSFlexGrid)
Dim idxRow As Long, idxCol As Long, lngMax As Long
Dim texte As String, taille As Size
With flexgrid
'Parcoure les colonnes
For idxCol = 0 To .Cols - 1
lngMax = 0
'Parcoure les lignes
For idxRow = 0 To .Rows - 1
texte = .TextMatrix(idxRow, idxCol)
'met la taille du texte de la cellule en pixels dans taille
GetTextExtentPoint32 hdc, texte, Len(texte), taille
'lngMax est la longueur du texte le plus long dans cette colonne
If taille.cx > lngMax Then lngMax = taille.cx
Next
'met lngMax en twips en ajoutant 10 pixels pour les marges
If lngMax > 0 Then lngMax = (lngMax + 10) * Screen.TwipsPerPixelX
'Applique la largeur de colonne si besoin
If lngMax > .ColWidth(idxCol) Then .ColWidth(idxCol) = lngMax
Next
End With
Juste un petit "bug" a signaler,
la fonction .FormatString interprete le ";" comme une commande d'entete de ligne.
Et forcément j'ai des données avec des ";" donc ça merdouille
pour y remedier j'ai remplacé la ligne 61
"If Len(Texte) > Len(LongTexte(Colonne)) Then LongTexte(Colonne) = Texte 'stockage du texte dans le tableau des texte les plus long "
Par
"If Len(Texte) > Len(LongTexte(Colonne)) Then
TexteRemplacement = ""
For i = 1 to Len(Texte)
TexteRemplcement =TexteRemplacement & "A"
next
LongTexte(Colonne) = TexteRemplacement
end if
Sinon merci ça m'a fait gagner beucoup de temps
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 20 juin 2006 à 00:23
Pour cela il te suffi de copier ce code dans ton source aprés le "Option explicit" mais pas dans le form_load
et ensuite dans ton form_load tu écrit le code suivant pour appeler la fonction que tu veint de définir en copiant dans ton source !!:
Call nom_de_la_fonction
Cela fonctionne avec n'importe quel fonction si je ne m'avance pas trops j'ais encore du mal avec les "Piblic" et les "Private" je me doute qu'il doit y avoir une autre methode mais bon....
Pour codé une focntion tu écrit : Public MaFonction -->return sans les "--".
Voila bon code..
cs_Moumoud
Messages postés16Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention 4 septembre 2008 20 juin 2006 à 00:00
Bonsoir Monsieur...
SVP comment utiliser ce module dans le code Form_load ???
j'attend votre réponse !!
merci
thkiller
Messages postés168Date d'inscriptionmercredi 24 mai 2006StatutMembreDernière intervention11 septembre 2007 15 juin 2006 à 13:29
Bonjour comment je peut faire pour que ce code prenne en compte tout les case de de mon grid ?
Goldeneye007
Messages postés70Date d'inscriptionmercredi 7 décembre 2005StatutMembreDernière intervention 9 juillet 2010 7 mai 2006 à 08:32
comment appeller ce module dans la datagrid car moi elle se redimensionne pas
cs_mophi
Messages postés1Date d'inscriptionmercredi 12 février 2003StatutMembreDernière intervention18 avril 2006 18 avril 2006 à 00:57
Cool ! C'est exactement ça que je cherchais, j'ai trouvé en 2mn
foofur
Messages postés13Date d'inscriptionmardi 25 février 2003StatutMembreDernière intervention 5 février 2008 17 févr. 2006 à 15:53
Exactement ce dont j'avais besoin. Parfait. Merci
pouda
Messages postés264Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention27 octobre 2014 4 déc. 2005 à 00:54
tout simplement génial merci a toi...
MrAlgo
Messages postés13Date d'inscriptionvendredi 10 décembre 2004StatutMembreDernière intervention22 juin 2005 30 mai 2005 à 17:19
Désolé de vous embeter avec mon problème masi moi je commence en vb, et j'avais ce problème pour redimensionner, ainsi comme l'inventeur de ce code la dit j'ai copié ce code dans un module mais cela ne fait rien..est ce que je dois rajouté un code dans le form_load du MsflexGrid??
Question stupide pour vous certes mais je ne connais pas trop encore ce qui est procédure et fonction..sorry
Merci pour vos réponses.
Amicalement Damien
2clo
Messages postés1Date d'inscriptionlundi 23 mai 2005StatutMembreDernière intervention23 mai 2005 23 mai 2005 à 12:32
Tres bon ctl. je gere plusieurs listes et tous va bien.
Juste une remarque, on recupére la taille de la chaine la plus longue mais si la fonte n'est pas de taille fixe il y a souci.
Peux tu me dire comment recuperer la taille reelle (en pixel ...) d'une chaine de caratere et de sa fonte ce qui permettrai de mettre la chaine la plus large et non pas la chaine la plus longue.
Merci pour ce code.
ydx35
Messages postés8Date d'inscriptionvendredi 12 septembre 2003StatutMembreDernière intervention19 octobre 2005 3 nov. 2004 à 14:21
Bnjr,
Interessant.....
Question (bete, peut-etre, mais, n'est-ce pas ?) :
y-a-t-il dan sle meme genre un moyen de pré-formater
la saisie et le format numérique (saisie par un KeyPressed...)
@+
cs_rodcobalt22
Messages postés193Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention16 février 2016 19 juil. 2004 à 08:35
Est tu sur de passer un MSF ? La première, j'avais pas fait gaffe et je me servait d'un grid !
Après, ça dépend également des données que tu insère dans ton MSF : "Texte only ?!".
Sinon, peut être que ton appel n'est pas correct, vérifie l'état de ton paramètre. Normalement 1 seul controle fonctionne, le premier appelé par la procédure.
Conseil simple qui ne te seront peut être pas utile, mais bon ça peut toujors aider ! ;-)
maxdebide
Messages postés13Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention26 juillet 2004 16 juil. 2004 à 16:14
Elle ne fait rien chez moi ,y a t-il qqchose à faire vis à vis du commentaire précédent ??
maxdebide
Messages postés13Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention26 juillet 2004 16 juil. 2004 à 16:14
Elle ne fait rien chez moi ,y a t-il qqchose à faire vis à vis du commentaire précédent ??
cs_rodcobalt22
Messages postés193Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention16 février 2016 6 févr. 2004 à 11:57
C'est re moi.
J'ai bien annalyser ton code, je veux t'avouer que j'ai pas tout compris.
Mais j'ai remarqué aussi quelque chose.
Cette procédure ne marche qu'une seule fois. en effet lorsque je renvoie un autre MSFlex ( diffèrent du premier ( MSF_Resultat))
La procédure ne le redimensionne pas ( MSF_Selection ).
de ce fait, j'ai fait "msflex.name" et c'est bien le bon controle qu'il a en paramètre.
Pourrais comprendre ce bug et y remédié.
ça serait cool.
cs_rodcobalt22
Messages postés193Date d'inscriptiondimanche 10 février 2002StatutMembreDernière intervention16 février 2016 4 févr. 2004 à 10:19
je veux simplement dire une chose : " Géniaaaaaaalllllll" 9/10
Un truc qui pourrait être utile, est ce possible de redimensionner la fenêtre qui contient le msfgrid ????
Si tu sais le faire ou quelqu'un d'autre dailleur, ça serait intéressant de l'intégré dans le module.
sinon c'est une procédure fort utile. Bravo
Cobham
Messages postés1Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention12 janvier 2004 12 janv. 2004 à 11:32
Merci pour ce code bien pratique et rapide d'exécution.
Grâce à toi, des africains (mes clients) pourront visionner les données
de manière optimale !!!
cs_trabice
Messages postés328Date d'inscriptionmercredi 26 novembre 2003StatutMembreDernière intervention24 novembre 20051 26 nov. 2003 à 18:12
merci bcp pr ce petit code
fabrice
tres utile
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 28 oct. 2003 à 21:09
Oublie mon dernier commentaire. Tout fonctionne tres bien ! Merci pour cette sources... tres tres utiles !
JoePatent
Messages postés171Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention20 juillet 2008 28 oct. 2003 à 21:00
Est-ce normal que j'obtienne un message d'erreur quand je tente de passer un msflexgrid ou un mshflexgrid en parametres ?
16 sept. 2012 à 13:56
10/10
30 juil. 2010 à 12:23
moi j'arrive pas a adapté ce code au mien ...
jai 10 cols dans mon tableau...
Nom de la grille : MSFlexgrid
Merci de m'aider....
21 avril 2007 à 17:24
bravo steph62 et bon courage
ton code m'a beaucoup aidé.
15 mars 2007 à 14:35
Un exemple :
hauteur de la ligne au départ : 200
1ère cellule : 1 ligne -> hauteur = 200
2ème cellule : 2 lignes -> hauteur 200 *2 400
3ème cellule : 1 ligne -> hauteur = 400
4ème cellule : 2 lignes -> hauteur 400 *2 800
Au final on se retrouve avec une hauteur correspondant à 4 lignes alors que le nombre de lignes maxi est de 2.
Je pense qu'il faut donc gérer une variable correspondant au nombre maxi de lignes dans les cellules et faire le redimensionnement quand tu as parcouru toutes les colonnes.
J'espère que j'ai été clair... En tout cas je te mets 9/10 pour ton source.
24 oct. 2006 à 17:32
6 juil. 2006 à 12:53
Pour info , il y a mieux :
Private Type Size
cx As Long
cy As Long
End Type
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPoint32A" _
(ByVal hdc As Long, ByVal lpsz As String, _
ByVal cbString As Long, lpSize As Size) As Long
Public Sub ResizeColumns(hdc As Long, flexgrid As MSFlexGrid)
Dim idxRow As Long, idxCol As Long, lngMax As Long
Dim texte As String, taille As Size
With flexgrid
'Parcoure les colonnes
For idxCol = 0 To .Cols - 1
lngMax = 0
'Parcoure les lignes
For idxRow = 0 To .Rows - 1
texte = .TextMatrix(idxRow, idxCol)
'met la taille du texte de la cellule en pixels dans taille
GetTextExtentPoint32 hdc, texte, Len(texte), taille
'lngMax est la longueur du texte le plus long dans cette colonne
If taille.cx > lngMax Then lngMax = taille.cx
Next
'met lngMax en twips en ajoutant 10 pixels pour les marges
If lngMax > 0 Then lngMax = (lngMax + 10) * Screen.TwipsPerPixelX
'Applique la largeur de colonne si besoin
If lngMax > .ColWidth(idxCol) Then .ColWidth(idxCol) = lngMax
Next
End With
End Sub
Voici comment appeler la procédure ResizeColumns :
vb
ResizeColumns Me.hdc, MSFlexGrid1
Trouver sur un autre site , je n'en suis pas l'auteur.
23 juin 2006 à 14:54
la fonction .FormatString interprete le ";" comme une commande d'entete de ligne.
Et forcément j'ai des données avec des ";" donc ça merdouille
pour y remedier j'ai remplacé la ligne 61
"If Len(Texte) > Len(LongTexte(Colonne)) Then LongTexte(Colonne) = Texte 'stockage du texte dans le tableau des texte les plus long "
Par
"If Len(Texte) > Len(LongTexte(Colonne)) Then
TexteRemplacement = ""
For i = 1 to Len(Texte)
TexteRemplcement =TexteRemplacement & "A"
next
LongTexte(Colonne) = TexteRemplacement
end if
Sinon merci ça m'a fait gagner beucoup de temps
20 juin 2006 à 00:23
et ensuite dans ton form_load tu écrit le code suivant pour appeler la fonction que tu veint de définir en copiant dans ton source !!:
Call nom_de_la_fonction
Cela fonctionne avec n'importe quel fonction si je ne m'avance pas trops j'ais encore du mal avec les "Piblic" et les "Private" je me doute qu'il doit y avoir une autre methode mais bon....
Pour codé une focntion tu écrit : Public MaFonction -->return sans les "--".
Voila bon code..
20 juin 2006 à 00:00
SVP comment utiliser ce module dans le code Form_load ???
j'attend votre réponse !!
merci
15 juin 2006 à 13:29
7 mai 2006 à 08:32
18 avril 2006 à 00:57
14 mars 2006 à 14:17
17 févr. 2006 à 15:53
4 déc. 2005 à 00:54
30 mai 2005 à 17:19
Question stupide pour vous certes mais je ne connais pas trop encore ce qui est procédure et fonction..sorry
Merci pour vos réponses.
Amicalement Damien
23 mai 2005 à 12:32
Juste une remarque, on recupére la taille de la chaine la plus longue mais si la fonte n'est pas de taille fixe il y a souci.
Peux tu me dire comment recuperer la taille reelle (en pixel ...) d'une chaine de caratere et de sa fonte ce qui permettrai de mettre la chaine la plus large et non pas la chaine la plus longue.
Merci pour ce code.
3 nov. 2004 à 14:21
Interessant.....
Question (bete, peut-etre, mais, n'est-ce pas ?) :
y-a-t-il dan sle meme genre un moyen de pré-formater
la saisie et le format numérique (saisie par un KeyPressed...)
@+
19 juil. 2004 à 08:35
Après, ça dépend également des données que tu insère dans ton MSF : "Texte only ?!".
Sinon, peut être que ton appel n'est pas correct, vérifie l'état de ton paramètre. Normalement 1 seul controle fonctionne, le premier appelé par la procédure.
Conseil simple qui ne te seront peut être pas utile, mais bon ça peut toujors aider ! ;-)
16 juil. 2004 à 16:14
16 juil. 2004 à 16:14
6 févr. 2004 à 11:57
J'ai bien annalyser ton code, je veux t'avouer que j'ai pas tout compris.
Mais j'ai remarqué aussi quelque chose.
Cette procédure ne marche qu'une seule fois. en effet lorsque je renvoie un autre MSFlex ( diffèrent du premier ( MSF_Resultat))
La procédure ne le redimensionne pas ( MSF_Selection ).
de ce fait, j'ai fait "msflex.name" et c'est bien le bon controle qu'il a en paramètre.
Pourrais comprendre ce bug et y remédié.
ça serait cool.
4 févr. 2004 à 10:19
Un truc qui pourrait être utile, est ce possible de redimensionner la fenêtre qui contient le msfgrid ????
Si tu sais le faire ou quelqu'un d'autre dailleur, ça serait intéressant de l'intégré dans le module.
sinon c'est une procédure fort utile. Bravo
12 janv. 2004 à 11:32
Grâce à toi, des africains (mes clients) pourront visionner les données
de manière optimale !!!
26 nov. 2003 à 18:12
fabrice
tres utile
28 oct. 2003 à 21:09
28 oct. 2003 à 21:00