MSFlexgrid [Résolu]

Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 22 oct. 2011 à 18:01 - Dernière réponse : Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention
- 9 nov. 2011 à 08:31
bonjour,

j'ai 2 problèmes en vb6 et j'aimerai bien que quelqu'un me vienne en aide.

j'utilise une flexgrid comportant 6 colonnes et 20 lignes.
je réussis à saisir directement dans ma flexgrid.

pb1- je ne sais pas s'il est possible pour une meme ligne d'additionner 2 cellules de 2 colonnes différentes puis mettre le résultat dans une autre cellule. par exple pour la ligne 1, j'additionne la colonne2 + la colonne3 et je mets le résultat dans la colonne6.

pb2 - j'aimerai savoir comment sélectionner une ligne entière dans une boucle for.

en fait je compare 2 valeurs V1 et V2 de ma flexgrid appartenant a des lignes et colonnes différentes. je voudrai que si V1 > V2 alors la ligne comportant la valeur V2 prenne une couleur particulier (vert ou rouge)

Merci vous votre Aide
Afficher la suite 

Votre réponse

26 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 22 oct. 2011 à 18:22
3
Merci
Bonjour,

Je ne sais pas trop ce que tu veux faire.
Quoi qu'il en soit et quel que soit le point où tu te trouve dans la MSFlexGrid (si nommée par exemple MSFlexGrid1):
1)
 toto = MSFlexGrid1.TextMatrix(MSFlexGrid1.MouseRow, MSFlexGrid1.MouseCol)

Te retournera dans toto le contenu de la cellule où tu es.
2) inutile de te dire que MSFlexGrid1.MouseRow retourne un n° de ligne et que MSFlexGrid1.MouseCol retourne le N° de colonne.
A partir de cela ===>> fais ce que tu veux
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 23 oct. 2011 à 10:20
3
Merci
Là, quand-même, ce sera à toi de travailler un peu !
Quelques pistes qui devraient te conduire à ton résultat :
TextMatrix du texte, pas du numérique.>Q> A transfpormer en numérique pour faire des opérations, hein !. Val convient ici car val("5h") = 5
Tu n'es absolument pas obligé de calculer et remplir toutes les lignes ! ne le fait que ppour celles qui contiennent quelque-chose ! (une simple expression conditionnelle)
Kif-Kif pour le reste de ton problème ===>> expressions conditionnelles simples !

En fait : tout est ici extrêmement simple, pour peu que tu appliques les règles (les bases) les plus élémentaires de l'utilisation des expressions conditionnelles (que ce soit par If ... Then ... Else ... ou à l'aide de Select Case) ! A2 étrudier donc, avant d'aller plus loin. Car ce que tu nous dis ici montre assez clairement que tu as brulé cette étape incontournable


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 oct. 2011 à 11:04
3
Merci
Que répondre ?
Ta question est plutôt étonnante
Voici comment je vais donc le faire : de manière générale
If expression1 and expression2 Then 
....
end If

où :
- expression1 est une expression de critère (exemple ma_valeur1 > 3)
- expression2 est une expression de critère (exemple ma_valeur1 <= 5)
J'arrête là.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 29 oct. 2011 à 11:08
3
Merci
Et fais-moi le plaisir de saisir cette occasion pour aller lire Cette discussion et t'intéresser de très près à l'indentation et à la mise entre balises du code présenté. Ce n'est pas un "luxe").


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 23 oct. 2011 à 09:04
0
Merci
Bonjour,

Tout d'abord merci.

c'est exactement ce que j'ai fait pour le problème et now ça marche bien sauf que ça me rempli des zéro dans des cases inutilisées. voici mon code:

With frmRecapAvantOrdo
'boucle sur toutes les lignes de données
For lRow = .FixedRows To .Rows - 1
'obtenir les valeurs de la ligne en cours
dValue1 = Val(.TextMatrix(lRow, 2))
dValue2 = Val(.TextMatrix(lRow, 3))
'fait la somme des 2 valeurs
dTotal = dValue1 + dValue2
'Inscrire le montant total dans la la colonne Heure de fin
.TextMatrix(lRow, 5) = dTotal
Next lRow
'Ajouter une nouvelle ligne
.Rows = .Rows + 1
End With

quand au problème j'ai pas encore la solution.j'explique de nouveau ce problème. En fait
=============================
taches| heure debut|Heure Fin
=============================
1 | 3h | 5h
2 | 4h | 9h

dans ce tableau, j'ai 2 taches T1 et T2 qui utilisent une meme Machine.
La tache T1 commence a 3h et fini a 5h. Vu que T2 utilise la meme Machine elle ne peut que commencer a t>5
donc v1=5 et V2=4 j'aimerai que si V1>V2 la ligne comportant T1 reste inchangée. mais si V2<V1 comme c'est le cas présentement alors le ligne comportant T2 change de couleur.

je ne sais pas si c'est plus clair now....!

Merci pour ton aide... Espérant te lire !!!!!
Commenter la réponse de Dbratt
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 23 oct. 2011 à 10:39
0
Merci
For e = 1 To 19
For u = 1 To 19
TabProduit(u) = frmRecapAvantOrdo.TextMatrix(u, 0)
TabRessources(u) = frmRecapAvantOrdo.TextMatrix(u, 1)
TabHeureD(u) = frmRecapAvantOrdo.TextMatrix(u, 2)
TabDuree(u) = frmRecapAvantOrdo.TextMatrix(u, 3)
TabDelai(u) = frmRecapAvantOrdo.TextMatrix(u, 4)
TabHeureF(u) = frmRecapAvantOrdo.TextMatrix(u, 5)
Debug.Print TabProduit(u)
Debug.Print TabDuree(u)
Debug.Print TabDelai(u)
Next u
If TabRessources(e) = TabRessources(e + 1) And TabHeureF(e) < TabHeureD(e + 1) Then
frmRecapAvantOrdo.RowSel
End If
Next e

J'avoue que c'est tres simple mais je ne sais pas pourquoi j'y arrive pas!
dans mon programme ci dessus, je mets toutes les valeurs de ma Flexgrid dans des tableaux car je pense c'est plus facile a manipuler.
Dans ma second boucle For, j'ai mis des conditions mais maintenant je voudrais que lorsquelles sont verifiees, que la ligne concernee change de couleur et ca j'y arrive pas! Pouvez vous m'aider a ce niveau la svp
Commenter la réponse de Dbratt
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 23 oct. 2011 à 11:22
0
Merci
Merci bcp pour le conseil maintenant j'ai mis des conditions et je n'affiche plus de zéro dans les cases inutilisées.

Mais j'arrive tjrs pas a résoudre mon deuxième problème a savoir comment comment faire pour changer automatiquement la couleur d'une ligne lorsqu'une condition est vérifiée
Commenter la réponse de Dbratt
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 23 oct. 2011 à 14:15
0
Merci
Bonsoir je ne sais pas ce qui cloche avec mon code. en fait je n'arrive tjrs pas changer la couleur de la ligne automatiquement une fois que la condition du if est vérifiée.

pouvez vous me dire ne qui ne va pas !

Private Sub cmdessai1_Click()

Dim dTotal As Double
Dim dValue1 As Double 'recupere la valeur de la cellule heure de debut
Dim dValue2 As Double 'recupere la valeure de la cellule duree
Dim dValue3 As Double 'recupere la valeur de la cellule heure de fin
Dim dValue4 As Double 'recupere la valeur de la cellule Code Ressource
Dim dValue5 As Double 'recupere la valeur de la cellule delai
Dim lRow As Long


With frmRecapAvantOrdo
'boucle sur toutes les lignes de données
For u = 1 To 19
For lRow = .FixedRows To .Rows - 1

'obtenir les valeurs de la ligne en cours

dValue1 = Val(.TextMatrix(lRow, 2)) 'heurre debut
dValue2 = Val(.TextMatrix(lRow, 3)) 'Duree
dValue3 = Val(.TextMatrix(lRow, 5)) 'heure de fin
dValue4 = Val(.TextMatrix(lRow, 1)) 'code ressource
dValue5 = Val(.TextMatrix(lRow, 4)) 'DelaiNext u

'je remplis les differents tableaux

TabHeureD(lRow) = dValue1
TabDuree(lRow) = dValue2
TabHeureF(lRow) = dValue3
TabRessources(lRow) = dValue4
TabDelai(lRow) = dValue5

'verifie les valeurs comprises dans les tableau

Debug.Print TabRessources(lRow)
Debug.Print TabHeureD(lRow)
Debug.Print TabDuree(lRow)
Debug.Print TabDelai(lRow)
Debug.Print TabHeureF(lRow)

'verifie si les champs de la Flexgrid contiennent une valeur

If dValue1 <> 0 And dValue2 <> 0 Then

' si valeur alors on fait la somme
dTotal = dValue1 + dValue2
'Inscrire le montant total dans la la colonne Heure de fin
.TextMatrix(lRow, 5) = dTotal
Else
'si pas de valeur alors on ne met rien dans la colonne heure de fin

.TextMatrix(lRow, 5) = ""
End If
If TabRessources(u) = TabRessources(u + 1) And TabHeureF(u) < TabHeureD(u + 1) Then
frmRecapAvantOrdo.Row = u
frmRecapAvantOrdo.Col = 1
frmRecapAvantOrdo.BackColorSel = QBColor(10)
End If

Next lRow
'Ajouter une nouvelle ligne
.Rows = .Rows + 1
Next u
End With
End Sub
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 23 oct. 2011 à 17:22
0
Merci
en fait je n'arrive tjrs pas changer la couleur de la ligne automatiquement une fois que la condition du if est vérifiée.

Je crois que tu n'a pas compris ce qu'étaient les couleurs, dans ce contrôle !
Elles ne sont appliquées (et définies pour) non pour colorier définitivement une ligne, mais pour recevoir une couleur dans certaines circonstances (celles que tu définis)
Ainsi ton :
frmRecapAvantOrdo.BackColorSel =  QBColor(10) 

fait que cette couleur sera attribuée pendant une sélection (et quelle que soit la sélection faite et uniquement pour mettre en exergue la sélection et pendant la seule durée de la sélection). Point barre.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 23 oct. 2011 à 21:33
0
Merci
Merci beaucoup pour tes conseils ils me sont très utiles.

Dans mon code ci-dessus, je ne comprends pas pourquoi j'ai une erreur du type " indice en dehors de la plage ". Ma Flexgrid a 6 colonnes et 30 lignes tandis que mes différents tableaux sont de taille 40

Pouver vous me donner explication car j'ai beau réfléchir et j'ai tjrs pas de réponse. je sais que mes questions peuvent paraître bêtes mais je suis vraiment novis en programmation

Merci bcp
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 23 oct. 2011 à 23:35
0
Merci
Sur quelle ligne, cette erreur, qui ne me parait pas liée ta flexgrid, mais plus probablement à tes tableaux dynamiques TabHeure,TabDuree,TabHeure,TabRessources et TabDelai dont on ignore (pas dans ton code) comment ils ont été dimensionnés !



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 24 oct. 2011 à 23:02
0
Merci
Const tailleMax = 40

Dim TabProduit(tailleMax) As String 'Tableau Produits
Dim TabRessources(tailleMax) As String 'Tableau ressources
Dim TabDuree(tailleMax) As String 'Tableau durees
Dim TabDelai(tailleMax) As String 'Tableau Delais
Dim TabHeureD(tailleMax) As String 'Tableau Heure de debut
Dim TabHeureF(tailleMax) As String 'Tableau Heure de Fin

Private Sub cmdessai1_Click() 'Private Sub total()

Dim dTotal As Double
Dim dValue1 As Double 'recupere la valeur de la cellule heure de debut
Dim dValue2 As Double 'recupere la valeure de la cellule duree
Dim dValue3 As Double 'recupere la valeur de la cellule heure de fin
Dim dValue4 As Double 'recupere la valeur de la cellule Code Ressource
Dim dValue5 As Double 'recupere la valeur de la cellule delai
Dim lRow As Long


With frmRecapAvantOrdo
'boucle sur toutes les lignes de données
For u = 1 To 19
For lRow = .FixedRows To .Rows - 1

'obtenir les valeurs de la ligne en cours

dValue1 = Val(.TextMatrix(lRow, 2)) 'heurre debut
dValue2 = Val(.TextMatrix(lRow, 3)) 'Duree
dValue3 = Val(.TextMatrix(lRow, 5)) 'heure de fin
dValue4 = Val(.TextMatrix(lRow, 1)) 'code ressource
dValue5 = Val(.TextMatrix(lRow, 4)) 'DelaiNext u

'je remplis les differents tableaux

[color=yellow]TabHeureD(lRow) = dValue1/color
TabDuree(lRow) = dValue2
TabHeureF(lRow) = dValue3
TabRessources(lRow) = dValue4
TabDelai(lRow) = dValue5

'Debug.Print TabRessources(lRow)
'Debug.Print TabHeureD(lRow)
'Debug.Print TabDuree(lRow)
'Debug.Print TabDelai(lRow)
'Debug.Print TabHeureF(lRow)

'verifie si les champs de la Flexgrid contiennent une valeur

If dValue1 <> 0 And dValue2 <> 0 Then

' si valeur alors on fait la somme
dTotal = dValue1 + dValue2
'Inscrire le montant total dans la la colonne Heure de fin
.TextMatrix(lRow, 5) = dTotal
Else
'si pas de valeur alors on ne met rien dans la colonne heure de fin
.TextMatrix(lRow, 5) = ""
End If
If TabRessources(u) = TabRessources(u + 1) And TabHeureF(u) < TabHeureD(u + 1) Then
frmRecapAvantOrdo.Row = u
frmRecapAvantOrdo.Col = 1
frmRecapAvantOrdo.BackColorSel = QBColor(10)
End If

Next lRow
'Ajouter une nouvelle ligne
.Rows = .Rows + 1
Next u

End With

End Sub

Bonsoir,

Le code ci dessus bloque au niveau de la ligne en Bleue.! la taille des tableaux (40) et pourtant plus grande que le nombre de ligne de la MSFlexgrid (30).

La dimension des mes tableaux sont en debut debut de code...

Merci et bonne soiree
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 oct. 2011 à 07:38
0
Merci
Et quelles sont à ce moment d'erreur-là (entre dans le debugger) la valeur de .FixedRows et celle de .rows (qui déterminent la valeur de lrow) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 25 oct. 2011 à 10:49
0
Merci
Bonjour,

A ce moment la , la valeur de lrow est 41. je sais pas pourquoi elle passe a 41? pourtant je me disais que lrow max devait etre 30 vu que ma flexgrid compte 30 lignes
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 oct. 2011 à 11:17
0
Merci
Tu ne vois par pourquoi elle dépasse 40 ? vraiment pas ?
Allons bon : à chaque tour de u (et tu le fais 19 fois), ton code incrémente systématiquement de 1 rang, puis tu entames ta boucle avec lrow
Et tu es seul, jusqu'à ^présent, à savoir quelle est, au tout départ (avant ta boucle u) la valeur de lrow (qui dépend donc de .rows)
Le reste relève plus de l'arithmétique et du bon sens (y compris à l'aide de bûchettes) que de l'informatique
Mon conseil (et à la seule condition que tu saches exactement où placer ta limite) : mets donc une expression conditionnelle juste avant ton next u, du genre :
...
if .Rows >= mon_max_admissible then exit for
.Rows = .Rows + 1
Next u 
...

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 25 oct. 2011 à 12:10
0
Merci
Merci Ca marche bien mais ca ne fait pas ce que je veux.

Je vais vous expliquer mon code en vous disant ce que je cherche a faire peut etre vous comprendrai mieux mon probleme.

J'ai choisi d'ecrir directement dans ma flexgrid. Donc le lrow a pour but de lire toutes les valeurs presentes dans la flexgrid et de les stocker dans des tableaux. c'est en gros le role de la boucle : (For lRow = .FixedRows To .Rows - 1 ).

Une fois cela fait, les valeurs presentes dans la flexgrid sont donc dans des tableaux. la boucle For u = 1 To 19 elle a pour but de comparer les resultats present dans les tableaux TabHeureD(u)=V1 avec TabHeureF(u+1)=V2 et TabRessources(u) avec TabRessources(u+1).

Je voudrais que:

si TabRessources(u)= TabRessources(u+1) et V1 < V2 Alors
la ligne comportant V2 change de couleur.

je ne sais pas si vous voyez ce que je veux faire. si oui je vous prie de bien vouloir a partir de mon code ci dessous me dire quoi corriger pour arriver a mes fins.

Merci
Commenter la réponse de Dbratt
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 25 oct. 2011 à 12:17
0
Merci
Je vais vous expliquer mon code en vous disant ce que je cherche a faire peut etre vous comprendrai mieux mon probleme.
...
si TabRessources(u)= TabRessources(u+1) et V1 < V2 Alors
la ligne comportant V2 change de couleur.
...
je ne sais pas si vous voyez ce que je veux faire. si oui je vous prie de bien vouloir a partir de mon code ci dessous me dire quoi corriger pour arriver a mes fins.


désolé, mais là, vois-tu, tu es en train :
1) de t'écarter considérablement du problème originel (relis ta première question)
2) de nous demander de faire à ta place un exercice au demeurant simple
3) tu reviens sur un point auquel nous avons déjà répondu, en ce qui concerne la couleur ! (impossible)
Bonne chance.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 26 oct. 2011 à 11:22
0
Merci
Bonjour,

Merci pour l'aide j'avoue que cet exercice est vraiment simple mais je dois juste me poser les bonnes questions.

une fois de plus merci je vous recontacte si j'ai un sourci
Commenter la réponse de Dbratt
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 29 oct. 2011 à 10:58
0
Merci
For u = 1 To 30

'je remplis les differents tableaux

TabHeureD(u) = frmRecapAvantOrdo.TextMatrix(u, 2)
TabDuree(u) = frmRecapAvantOrdo.TextMatrix(u, 3)
TabHeureF(u) = frmRecapAvantOrdo.TextMatrix(u, 5)
TabRessources(u) = frmRecapAvantOrdo.TextMatrix(u, 1)
TabDelai(u) = frmRecapAvantOrdo.TextMatrix(u, 4)

'Debug.Print TabRessources(u)
'Debug.Print TabHeureD(u)
'Debug.Print TabDuree(u)
'Debug.Print TabDelai(u)
'Debug.Print TabHeureF(u)

If TabRessources(u) = TabRessources(u + 1) Then 'And TabHeureF(u) < TabHeureD(u + 1) Then
Debug.Print TabRessources(u)
Debug.Print TabRessources(u + 1)
frmRecapAvantOrdo.TextMatrix(u, 2) = 30
Debug.Print frmRecapAvantOrdo.TextMatrix(u, 2)
End If

Next u

bonjour,

dans le code ci dessus je ne comprend pas pourqoui dans ma condition (if) le and n'est pas pris en compte. en fait je les su car quand je l'ai mis en commentaire tel que ci dessus c'est donc la ou j'ai pu observer un 30 dans frmRecapAvantOrdo.TextMatrix(u, 2).
avez vous une idee svp merci
Commenter la réponse de Dbratt
Dbratt 29 Messages postés samedi 22 octobre 2011Date d'inscription 10 novembre 2011 Dernière intervention - 9 nov. 2011 à 07:44
0
Merci
[i]Bonjour,

Tout d'abord je tiens a vous remercier pour vos précieux conseils ainsi que pour votre assistance.

J'ai un autre problème au qu'elle je crois avoir trouvé la solution mais je ne pense pas que cette solution soit optimale.

En fait j'ai un tableau supposons de taille 30 et je souhaite comparer toutes les valeurs de ce tableau afin de repérer les doublons. Pour le faire, j'ai écris le code ci-dessous
 


Dim TabRessources(30) as Interger
Dim i as Integer

for i=1 to 30
if TabRessources(i) = TabRessources(i+1) then
TabRessources(i+1)=0
elseif TabRessources(i) = TabRessources(i+2) then
TabRessources(i+2)=0
elseif TabRessources(i) = TabRessources(i+3) then
TabRessources(i+3)=0
.
.
.
elseif TabRessources(i) = TabRessources(i+30) then
TabRessources(i+30)=0
end if
Next i

le problème ici est que si par exemple mon tableau est de taille 1000 faire ce code va s’avérer fastidieux.

J'aimerai svp avoir qlqs pistes pour savoir comment optimiser ce code

merci

Cordialement

William/i
Commenter la réponse de Dbratt

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.