RECURSIVITE

Résolu
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 3 déc. 2004 à 11:15
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 4 déc. 2004 à 08:43
Bonjour,

Pour ceux qui connaise un peu je cherche à faire un module qui me permette de faire des lettrages (comptabilité)

Ex : J'ai un nombre d'un coté '125'
et j'ai une liste de nombres de l'autre '100', '24', '1', '14', '48'

Tous le monde voit bien que 100 + 24 + 1 = 125.

Il faudrait que mon module effectue toutes les additions possibles et vérifie s'il y a une solution au problème.
Ex : 125 <> 100 ; 125 <> 24 ; 124 <> 1 .....
125 <> 100 + 24 ; 125 <> 100 + 1 ; 125 <> 100 + 14...
125 = 100 + 24 + 1 ; 125 <> 100 + 24 + 14 ....

Je pense qu'il faut pour cela utiliser la récursivité (même si je n'y connais rien).

J'ai esquissé un petit code avec près de 5 boucles For imbriquées, mais c'est pas encore tout à fait ça. Si qq1 a une idée ou veux bien voir mon code pour me corriger : je peux le mailler, en effet il est un peu trop long pour tenir ici.

Merci d'avance

Bonne prog
++

13 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 déc. 2004 à 19:54
Option Explicit

Rem 1 TextBox --> TxtNb      affichage du nombre à trouver
Rem 6 TextBox --> TxtPlaque  groupe de contrôle index de 1 à 6
Rem 1 Label   --> LblInfo    afichage du résultat
Rem 1 Button  --> CmdLancer
Rem 1 Button  --> CmdQuitter

' Définition d'une plaque
Private Type Plaque
    Nb  As Double       ' Nombre associé à la plaque
    Op  As String       ' Opérateur associé a la plaque
    Pos As Long         ' Position d'ordre dans le calcul du compte
End Type

Dim Tirage(6) As Plaque
Dim nbUtil    As Long

Private Sub CmdLancer_Click()
'   Lancer la recherche 
    CmdLancer.Enabled = False
    LblInfo.Caption = ""
'   Initialise les variables pour la recherche
    Call InitTirage
'   Si le compte est trouvé, on affiche le résultat
    If CompteBon(1) Then
       Call AfficheResultat
       Else
       LblInfo.Caption = "Pas trouvé!"
       End If
    CmdLancer.Enabled = True
End Sub

Private Sub InitTirage()
' Initialise les variables...
    Dim lgFor As Long
    nbUtil = 1
'   La plaque 0 contient le résultat à obtenir
    Tirage(0).Nb = Val(TxtNb.Text)
'   Affecte les valeurs des 6 plaques
    For lgFor = 1 To 6
        Tirage(lgFor).Nb = Val(TxtPlaque(lgFor).Text)
        Tirage(lgFor).Op = ""
        Tirage(lgFor).Pos = 0
        Next
End Sub

Private Sub AfficheResultat()
    Dim inFor    As Integer
    Dim inPlus   As Integer
    Dim stResult As String
    
    LblInfo.Caption = "Résultat :" & vbCrLf
    
'   On tourne autant de fois que l'on a utilisé de plaque
    For inFor = 1 To nbUtil - 1
'   On regarde toutes les plaques à chaque fois
        For inPlus = 1 To 6
'           Et si c'est celle qui a été utilisé à ce moment là, on l'ajoute à la chaîne de résultat
            If Tirage(inPlus).Pos = nbUtil - inFor Then
' Si c'est la première plaque, on ne fait qu'ajouter son chiffre
               If inFor = 1 Then
                  stResult = Tirage(inPlus).Nb
                  Else
' Sinon, on regarde le type d'opérateur auquel on a affaire. Car la multiplication et la division représentent
' des cas particuliers...                  If (Tirage(inPlus).Op "*") Or (Tirage(inPlus).Op "/") Then
' Si on se trouve sur la deuxième plaque, pas de cas particulier,
                     If inFor = 2 Then
' on augmente la chaîne résultat de l'opérateur et du chiffre.
                        stResult = stResult & Tirage(inPlus).Op & Tirage(inPlus).Nb
                        Else
' sinon, on met des parenthèses parce que l'opération précédente est effectuée
' avant la multiplication ou la division que l'on va ajouter
                        stResult = "(" & stResult & ")" & Tirage(inPlus).Op & Tirage(inPlus).Nb
                        End If
                     Else
' Dans les autres cas ("+" et "-") pas la peine de s'occuper des parenthèses,
' on augmente juste la chaîne résultat de l'opérateur et du chiffre.
                     stResult = stResult & Tirage(inPlus).Op & Tirage(inPlus).Nb
                     End If
                  End If
               End If
        Next inPlus
    Next inFor
    
    LblInfo.Caption = LblInfo.Caption & stResult
    
End Sub

Public Function CompteBon(inPos As Long) As Boolean
    Dim inTMP As Long
    inTMP = inPos
    If Tirage(0).Nb 0 Then CompteBon True: Exit Function
    
    If nbUtil = 7 Then Exit Function

    Do While inTMP <= 6
       If (Tirage(inTMP).Op = "") Then
           If SoustraitPossible(inTMP) Then
              Call Soustraction(inTMP)
              If CompteBon(1) Then CompteBon = True: Exit Function
              Call RetireSoustraction(inTMP)
              End If
           If DivisePossible(inTMP) Then
              Call Division(inTMP)
              If CompteBon(1) Then CompteBon = True: Exit Function
              Call RetireDivision(inTMP)
              End If
              Call Addition(inTMP)
              If CompteBon(1) Then CompteBon = True: Exit Function
              Call RetireAddition(inTMP)
              Call Multiplication(inTMP)
              If CompteBon(1) Then CompteBon = True: Exit Function
              Call RetireMultiplication(inTMP)
           End If
       inTMP = inTMP + 1
       Loop

End Function

Public Sub Addition(inPlaque As Long)
    Tirage(inPlaque).Pos = nbUtil
    nbUtil = nbUtil + 1
    Tirage(inPlaque).Op = "-"
    Tirage(0).Nb = Tirage(0).Nb + Tirage(inPlaque).Nb
End Sub

Public Sub Soustraction(inPlaque As Long)
    Tirage(inPlaque).Pos = nbUtil
    nbUtil = nbUtil + 1
    Tirage(inPlaque).Op = "+"
    Tirage(0).Nb = Tirage(0).Nb - Tirage(inPlaque).Nb
End Sub

Public Sub Multiplication(inPlaque As Long)
    Tirage(inPlaque).Pos = nbUtil
    nbUtil = nbUtil + 1
    Tirage(inPlaque).Op = "/"
    Tirage(0).Nb = Tirage(0).Nb * Tirage(inPlaque).Nb
End Sub

Public Sub Division(inPlaque As Long)
    Tirage(inPlaque).Pos = nbUtil
    nbUtil = nbUtil + 1
    Tirage(inPlaque).Op = "*"
    Tirage(0).Nb = Tirage(0).Nb / Tirage(inPlaque).Nb
End Sub

Public Sub RetireAddition(inPlaque As Long)
    Tirage(inPlaque).Pos = 0
    nbUtil = nbUtil - 1
    Tirage(inPlaque).Op = ""
    Tirage(0).Nb = Tirage(0).Nb - Tirage(inPlaque).Nb
End Sub

Public Sub RetireSoustraction(inPlaque As Long)
    Tirage(inPlaque).Pos = 0
    nbUtil = nbUtil - 1
    Tirage(inPlaque).Op = ""
    Tirage(0).Nb = Tirage(0).Nb + Tirage(inPlaque).Nb
End Sub

Public Sub RetireMultiplication(inPlaque As Long)
    Tirage(inPlaque).Pos = 0
    nbUtil = nbUtil - 1
    Tirage(inPlaque).Op = ""
    Tirage(0).Nb = Tirage(0).Nb / Tirage(inPlaque).Nb
End Sub

Public Sub RetireDivision(inPlaque As Long)
    Tirage(inPlaque).Pos = 0
    nbUtil = nbUtil - 1
    Tirage(inPlaque).Op = ""
    Tirage(0).Nb = Tirage(0).Nb * Tirage(inPlaque).Nb
End Sub

Public Function SoustraitPossible(inPlaque As Long) As Boolean
    SoustraitPossible = ((Tirage(0).Nb - Tirage(inPlaque).Nb) >= 0)
End Function

Public Function DivisePossible(inPlaque As Long) As Boolean
    Dim sgTMP As Single
    sgTMP = (Tirage(0).Nb / Tirage(inPlaque).Nb)
    DivisePossible = ((sgTMP >= 1) And (sgTMP = Int(sgTMP)) And (Tirage(inPlaque).Nb <> 1))
End Function

Private Sub TxtNb_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
       Case 48 To 57:
       Case 8:
       Case Else: KeyAscii = 0
       End Select
End Sub

Private Sub TxtPlaque_KeyPress(Index As Integer, KeyAscii As Integer)
    Select Case KeyAscii
       Case 48 To 57:
       Case 8:
       Case Else: KeyAscii = 0
       End Select
End Sub

Private Sub cmdQuitter_Click()
    Unload Me
    End
End Sub


Daniel
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 déc. 2004 à 11:58
Salut, Bouv

Envoie ;) : Epsylon9@gmail.com

@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
0
Cramfr Messages postés 160 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 8 juillet 2008
3 déc. 2004 à 12:01
Salut,

Tu as pensé à le mettre dans un tableau ? ...

Si tu trouves égalité tu sors de ta boucle
Utilise une function qui renvoie un tableau
si dans ta boucle tu ne trouves pas avec 1 element
tu lances la boucle pour chercher avec le cumul de 2 élements
et ainsi de suite

Et à la fin tu prends la meilleurs des solutions

A+

Cramsoturf le VBien en quête de nouveau programme :big)
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
3 déc. 2004 à 12:35
jrivet>> J'ai essayer de t'envoyer la source, mais il me revient non délivré. N'aurais tu pas fais une faute dans la saisie de ton adresse email ?

Cramfr>> Merci pour le conseil, c'est exactement ce que j'ai essayer de faire, mais tu l'as mieux dis. Si tu sais comment je peux faire ça...

Bonne prog
++
0

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

Posez votre question
Cramfr Messages postés 160 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 8 juillet 2008
3 déc. 2004 à 15:57
Un truc comme çà:

Private Sub DémarrageRecursive()
Dim tTab() As Variant
Dim iDim As Long
Dim tTabVal As Variant
iDim = 0
ReDim tTab(iDim)
tTabVal = Array(100, 24, 1, 14, 48)
GenereTableau tTab, iDim, 125, tTabVal, 0, False
MsgBox CStr(tTab(0))
End Sub

Sub GenereTableau(tTab, iDim, iMont, tTabVal, iDeb, bOk)
Dim i, j As Long
Dim iVal As Double
For i = 0 To UBound(tTab)
iVal = iVal + tTab(i)
Next i
If bOk Then Exit Sub
For i = iDeb To UBound(tTabVal)
If iMont <> tTabVal(i) Then
iVal = iVal + tTabVal(i)
Select Case True
Case iMont = iVal
iDim = iDim + 1
ReDim Preserve tTab(iDim)
tTab(iDim) = tTabVal(i)
bOk = True
Exit For
Case iMont > iVal
If Not IsEmpty(tTab(0)) Then
iDim = iDim + 1
End If
ReDim Preserve tTab(iDim)
tTab(iDim) = tTabVal(i)
GenereTableau tTab, iDim, iMont, tTabVal, i + 1, False
If bOk Then Exit For
End Select
Else
ReDim tTab(0)
tTab(0) = tTabVal(i)
End If
If UBound(tTabVal) = i Then
iDim = iDim - 1
ReDim Preserve tTab(iDim)
End If
Next i
End Sub

Cramsoturf le VBien en quête de nouveau programme :big)
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
3 déc. 2004 à 21:16
Merci Gobillot,

C'est vraiment une source de titan, bien plus qu'il ne m'en fallait.
De quoi devenir un champion au compte est bon.

Je vais juste modifier afin de pouvoir avoir plus de nombres :

Ex : For lgFor = 1 To 6
Remplacé par un truc du genre
For lgFor = 1 To Ubound(TxtPlaque)
etc...

Je ne garde que les additions et c'est PARFAIT !!!

PS : Je vais quand même garder l'original dans un coin, on ne sait jamais.

Tu m'enleve un sacré épine du pied.
Merci bcp

Bien cordialement
Bonne prog
++
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
3 déc. 2004 à 22:12
Désolé mais j'ai encore besoin de ton aide Gobillot.
Je n'arrive pas à enlever les autres opérations.
En fait je ne veux garder que les additions.
Pourrai tu me corriger ?
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
3 déc. 2004 à 22:16
En fait j'ai remplacé les textbox par une ListBox (plus pratiqe pour ajouter le nombre de valeurs voulues).
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
3 déc. 2004 à 22:20
Option Explicit

Rem 1 TextBox --> TxtNb affichage du nombre à trouver
Rem 1 ListBox --> lstPlaque affiche une liste de nombres
Rem 1 Label --> LblInfo afichage du résultat
Rem 1 Button --> CmdAjouter ajoute des nombres a la listbox
Rem 1 Button --> CmdLancer
Rem 1 Button --> CmdQuitter

' Définition d'une plaque
Private Type Plaque
Nb As Double ' Nombre associé à la plaque
Op As String ' Opérateur associé a la plaque
Pos As Long ' Position d'ordre dans le calcul du compte
End Type

Dim Tirage() As Plaque
Dim nbUtil As Long

Private Sub cmdAjouter_Click()
Dim New_Nombre As String
New_Nombre = InputBox("Saisir un nombre")
If Not IsNumeric(New_Nombre) Then
MsgBox "Vous devez saisir un nombre !"
Exit Sub
End If
lstPlaque.AddItem New_Nombre
End Sub

Private Sub CmdLancer_Click()
' Lancer la recherche
CmdLancer.Enabled = False
LblInfo.Caption = ""
ReDim Tirage(lstPlaque.ListCount)
' Initialise les variables pour la recherche
Call InitTirage
' Si le compte est trouvé, on affiche le résultat
If CompteBon(1) Then
Call AfficheResultat
Else
LblInfo.Caption = "Pas trouvé!"
End If
CmdLancer.Enabled = True
End Sub

Private Sub InitTirage()
' Initialise les variables...
Dim lgFor As Long
nbUtil = 0
' La plaque 0 contient le résultat à obtenir
Tirage(0).Nb = Val(TxtNb.Text)
' Affecte les valeurs des 6 plaques
For lgFor = 0 To lstPlaque.ListCount - 1
lstPlaque.ListIndex = lgFor
Tirage(lgFor).Nb = Val(lstPlaque.Text)
Tirage(lgFor).Op = ""
Tirage(lgFor).Pos = 0
Next
End Sub

Private Sub AfficheResultat()
Dim inFor As Integer
Dim inPlus As Integer
Dim stResult As String

LblInfo.Caption = "Résultat :" & vbCrLf

' On tourne autant de fois que l'on a utilisé de plaque
For inFor = 0 To nbUtil - 1
' On regarde toutes les plaques à chaque fois
For inPlus = 0 To lstPlaque.ListCount - 1
' Et si c'est celle qui a été utilisé à ce moment là, on l'ajoute à la chaîne de résultat
If Tirage(inPlus).Pos = nbUtil - inFor Then
' Si c'est la première plaque, on ne fait qu'ajouter son chiffre
If inFor = 1 Then
stResult = Tirage(inPlus).Nb
Else
' Sinon, on regarde le type d'opérateur auquel on a affaire. Car la multiplication et la division représentent
' des cas particuliers... 'If (Tirage(inPlus).Op "*") Or (Tirage(inPlus).Op "/") Then
' ' Si on se trouve sur la deuxième plaque, pas de cas particulier,
' If inFor = 2 Then
' ' on augmente la chaîne résultat de l'opérateur et du chiffre.
' stResult = stResult & Tirage(inPlus).Op & Tirage(inPlus).Nb
' Else
' ' sinon, on met des parenthèses parce que l'opération précédente est effectuée
' ' avant la multiplication ou la division que l'on va ajouter
' stResult = "(" & stResult & ")" & Tirage(inPlus).Op & Tirage(inPlus).Nb
' End If
'Else
' Dans les autres cas ("+" et "-") pas la peine de s'occuper des parenthèses,
' on augmente juste la chaîne résultat de l'opérateur et du chiffre.
stResult = stResult & Tirage(inPlus).Op & Tirage(inPlus).Nb
'End If
End If
End If
Next inPlus
Next inFor

LblInfo.Caption = LblInfo.Caption & stResult
End Sub

Public Function CompteBon(inPos As Long) As Boolean
Dim inTMP As Long
inTMP = inPos
If Tirage(0).Nb 0 Then CompteBon True: Exit Function

If nbUtil = 7 Then Exit Function

Do While inTMP <= lstPlaque.ListCount - 1
If (Tirage(inTMP).Op = "") Then
'If SoustraitPossible(inTMP) Then
' Call Soustraction(inTMP)
' If CompteBon(1) Then CompteBon = True: Exit Function
' Call RetireSoustraction(inTMP)
'End If
'If DivisePossible(inTMP) Then
' Call Division(inTMP)
' If CompteBon(1) Then CompteBon = True: Exit Function
' Call RetireDivision(inTMP)
'End If
Call Addition(inTMP)
If CompteBon(1) Then CompteBon = True: Exit Function
Call RetireAddition(inTMP)
'Call Multiplication(inTMP)
'If CompteBon(1) Then CompteBon = True: Exit Function
'Call RetireMultiplication(inTMP)
End If
inTMP = inTMP + 1
Loop
End Function

Public Sub Addition(inPlaque As Long)
Tirage(inPlaque).Pos = nbUtil
nbUtil = nbUtil + 1
Tirage(inPlaque).Op = "-"
Tirage(0).Nb = Tirage(0).Nb + Tirage(inPlaque).Nb
End Sub

Public Sub Soustraction(inPlaque As Long)
Tirage(inPlaque).Pos = nbUtil
nbUtil = nbUtil + 1
Tirage(inPlaque).Op = "+"
Tirage(0).Nb = Tirage(0).Nb - Tirage(inPlaque).Nb
End Sub

Public Sub Multiplication(inPlaque As Long)
Tirage(inPlaque).Pos = nbUtil
nbUtil = nbUtil + 1
Tirage(inPlaque).Op = "/"
Tirage(0).Nb = Tirage(0).Nb * Tirage(inPlaque).Nb
End Sub

Public Sub Division(inPlaque As Long)
Tirage(inPlaque).Pos = nbUtil
nbUtil = nbUtil + 1
Tirage(inPlaque).Op = "*"
Tirage(0).Nb = Tirage(0).Nb / Tirage(inPlaque).Nb
End Sub

Public Sub RetireAddition(inPlaque As Long)
Tirage(inPlaque).Pos = 0
nbUtil = nbUtil - 1
Tirage(inPlaque).Op = ""
Tirage(0).Nb = Tirage(0).Nb - Tirage(inPlaque).Nb
End Sub

Public Sub RetireSoustraction(inPlaque As Long)
Tirage(inPlaque).Pos = 0
nbUtil = nbUtil - 1
Tirage(inPlaque).Op = ""
Tirage(0).Nb = Tirage(0).Nb + Tirage(inPlaque).Nb
End Sub

Public Sub RetireMultiplication(inPlaque As Long)
Tirage(inPlaque).Pos = 0
nbUtil = nbUtil - 1
Tirage(inPlaque).Op = ""
Tirage(0).Nb = Tirage(0).Nb / Tirage(inPlaque).Nb
End Sub

Public Sub RetireDivision(inPlaque As Long)
Tirage(inPlaque).Pos = 0
nbUtil = nbUtil - 1
Tirage(inPlaque).Op = ""
Tirage(0).Nb = Tirage(0).Nb * Tirage(inPlaque).Nb
End Sub

Public Function SoustraitPossible(inPlaque As Long) As Boolean
SoustraitPossible = ((Tirage(0).Nb - Tirage(inPlaque).Nb) >= 0)
End Function

Public Function DivisePossible(inPlaque As Long) As Boolean
Dim sgTMP As Single
sgTMP = (Tirage(0).Nb / Tirage(inPlaque).Nb)
DivisePossible = ((sgTMP >= 1) And (sgTMP = Int(sgTMP)) And (Tirage(inPlaque).Nb <> 1))
End Function

Private Sub Form_Load()
Dim i As Integer
End Sub

Private Sub TxtNb_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 44:
Case 48 To 57:
Case 8:
Case Else: KeyAscii = 0
End Select
End Sub

Private Sub cmdQuitter_Click()
Unload Me
End
End Sub
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 déc. 2004 à 22:44
en fait oui c'est vraiment un programme pour le compte est bon.
il est pas parfait et ne teste pas toutes les possibilités, mais il trouve déjà pas mal de solutions.

tu peut enlever multiplications et divisions et tout ce qui va avec RetireMultiplication , RetireDivision et DivisePossible.
mais pour l'addition, il fait garder la Soustraction parce que les deux opérations sont lièes.
donc si ça marche pas c'est parce que t'as enlevé la soustraction.

pour le reste ça doit marcher.

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 déc. 2004 à 22:54
et aussi bizarre que ça puisse paraître. si t'enlève addition et tu garde la soustraction ça marche !

parce que le programme fonctionne à l'envers, il part du résultat et quand il fait une soustraction, en fait c'est une addition, d'ailleurs le signe de l'opération dans soustraction est "+"

j'espère que ça solutionne ton problème.

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
3 déc. 2004 à 23:28
petit point de détail aussi:
je vois que t'as ajouté "case 44" dans l'évênement KeyPress, c'est donc que tu veux faire des additions avec les nombres décimaux.
le problème c'est que avec la virgule ça marchera pas, ici avec l'instruction :
Tirage(lgFor).Nb = Val(lstPlaque.Text)
Val ne prendra en compte que le point, donc il faut mettre "case 46"
si t'enlève Val, il prendra en compte la virgule si ta configuration est la virgule, ou le point si ta configuration est le point.
donc vaut mieux laisser Val qui dépend pas de la congiguration.

Daniel
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
4 déc. 2004 à 08:43
Merci pour les précisions, en fait je l'ai retiré pour te simplifier la lecture mais j'avais mis

Tirage(lgFor).Nb = Val(Replacel(stPlaque.Text, ",", "."))

Et comme ça ça marche sauf qu'effectivement l'addition est la dernière solution qu'il trouve. Car quand je demande par ex 14,25 comme resultat à trouver.
Et Comme liste
14
0,25
11
10
...

Au lieu de me faire 14 + 0,25, il va me faire un truc du genre
(10 / 0,25) * 14 + 11 .....
Là c'est juste pour l'exemple. En effet il trouve une bonne solution, mais qu'est ce qu'il se prend la tête (enfin façon de parler).

Bon ben merci pour les renseignements, je vais essayer de voir avec le moins ce que ça donne et si je peux partir sur cette base.

Bonne prog
++
0
Rejoignez-nous