Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

dmoluc

XLDnaute Occasionnel
Bonjour à tous,

Depuis 2 jours j'essais de finaliser mon code sans succès. J'ai des données sur un UserForm que je veux écrire sur une feuille excel, bien sur sous condition. C'est un Diagramme de gantavec 4 Zones : la zones " listes des tâches", pour celle-ci le code fonctionne bien ; dans la zone graphique j'inscris des 1du début jusqu'à la fin de la tâche, puis je les sélectionne et colore la police et l'intérieur de cellule.

Pour les trois autres zonne, "personnel, mtériel et fourniture" j'avais penser utiliser les 1 qui sont dans la zone graphique comme condition pour écrire le nombre (Variable Q dans le code) dans les colonnes correspondantes, mais voilà, le code commence par l'onglet matériel, inscrit la désignation, commence à inscrire le nombre (Q) dans la bonne colonne, puis continue pendant quelques minutes jusqu'au fin fonds de la feuille. Et ne passe pas au autre onglet quand il a enfin terminer.

Voici le code pour les 3 items (la totalité est bien plus longue):

Code:
For i = 11 To 34
 For z = 115 To 137
        Select Case i
        Case 11 To 16
           Select Case z
           Case 115 To 120
            A = Me("ListBox" & i).Text
                If Application.CountIf(Range("A39:A45"), "=" & A) <> 0 And A <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> "" And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
                ElseIf Application.CountIf(Range("A39:A45"), "=" & A) = 0 And A = 0 And A <> "" Then
                Range("A45").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A45").End(xlUp).Row
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If

          End Select
        Case 17 To 26

           Select Case z
           Case 121 To 129
            A = Me("ListBox" & i).Text
            If Application.CountIf(Range("A87:A128"), "=" & A) <> 0 And A <> "" And A <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
               Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
                ElseIf Application.CountIf(Range("A87:A128"), "=" & A) = 0 And A <> "" Then
                Range("A128").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A128").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If
          End Select

                Case 27 To 34
                   Select Case z
           Case 130 To 137
            A = Me("ListBox" & i).Text

              If Application.CountIf(Range("A49:A83"), "=" & A) <> 0 And A <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
                ElseIf Application.CountIf(Range("A49:A83"), "=" & A) = 0 And A <> "" Then
                Range("A83").End(xlUp).Offset(1, 0) = A
               Ligne = Range("A83").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Cells(Ligne, Colonne).Value = Q
               compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If
          End Select

        End Select
      
    Next z
   Next i

La condition qui ne fonctionne pas et la boucle qui ne s'arrête pas:

Code:
If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If

Pour ceux qui veulent tester et qui ont excel 2007, je mets le fichier complet car il est bien difficile de reproduire un exemple représentatif d'une telle usine à gaz.
Le code se trouve : UserForm5, onglet Déboursé pour la tâche, bouton renseigner le planning
Attention comme la boucle ne s'arrête pas cela bloque l'ordi durant quelques minutes !

http://cjoint.com/?3HtrkxOhlpt

Merci pour votre aide car je suis vraiment coincé et peu être que je fais fausse route pour terminer le code

Cordialement

Didier
 

Pièces jointes

  • planning.jpg
    planning.jpg
    110 KB · Affichages: 113
  • planning.jpg
    planning.jpg
    110 KB · Affichages: 131
  • planning.jpg
    planning.jpg
    110 KB · Affichages: 131

néné06

XLDnaute Accro
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

Bonjour dmoluc,

Ta condition

Do.... loop, ne comporte pas de point de sortie ??
Ecrire plutôt ..

Do until compteur > 10 :) par exemple)


Loop

ou if ..... then exit do ,dans la boucle do...loop

et là tu sortiras de ta boucle.


A+
 
Dernière édition:

dmoluc

XLDnaute Occasionnel
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

Bonjour Néné

Ta solution fonctionne parfaitement, maintenant je sors de la boucle mais c'est pas gagné car la feuille reste blanche. ça n'écrit même pas les désignations alors que précédemment cela fonctionner, le code doit être plein d'erreur car j'ai beaucoup de mal avec les boucles et là j'en imbrique 3 différentes, c'est peu être un peu trop :(

Enfin merci beaucoup pour la syntaxe

A +
 

néné06

XLDnaute Accro
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

Re,

Au lieu de ça:
If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
Do
Cells(Ligne, Colonne + 1).Value = Q
compteur = compteur + 1
Colonne = Colonne + 1
Loop
End If



Essayes cela :
Do until Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée
Cells(Ligne, Colonne + 1).Value = Q
compteur = compteur + 1
Colonne = Colonne + 1
Loop

A+
 

dmoluc

XLDnaute Occasionnel
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

Je fais une boucle pour passer en revue les Listbox : For i = 11 To 34, Select Case i
Case 11 To 16 Etc...
En même temps je fais de même avec les textBox : For z = 115 To 137, Select Case z
Case 115 To 120
Dans les listbox j'ai la désignation qui va en colonne A du tableau avec 3 catégorie différentes ( Personnels, matériel et fournitures)
Dans les textbox j'ai les quantités correspondant au listBox et c'est là que la troisième boucle (Avec Do) intervient pour les inscrire sur la durée de la tâche. J'ai essayé de représenter ça sur la capture d'écran que j'ai posté en Haut

maintenant, sans presque rien changer, le code inscrit les titres dans l'onglet "matériel" et "fourniture" et effectue la boucle Do dans l'onglet fourniture en mélangeant les quantité quand il y a plusieurs fournitures, mais rien n'est écrit dans l'onglet personnel

Je vais essayer de détailler le code :
Code:
Dim z As Long
Dim Q As Double
Dim A

 For i = 11 To 34  'les N° des listbox
 For z = 115 To 137 'les N° des textBox
        Select Case i
        Case 11 To 16 ' les listBox "Personnels" pour le moment rien n'est inscrit sur la feuille !
           Select Case z
           Case 115 To 120 ' les textBox quantités pour le personnel
            A = Me("ListBox" & i).Text 'je récupére le texte des listbox
                If Application.CountIf(Range("A39:A45"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
'si A39:A45 A existe déjà, je récupère la ligne ou il se trouve
                Ligne = Application.Match(A, Columns(1), 0)
                Cells(Ligne, Colonne).Value = Q ' et j'inscrit Q au début de la tâche
                compteur = 1
                Lig = Range("A36").End(xlUp).Row ' Je récupère la ligne de la tâche dans liste des tâches afin de vérifier si 1 est inscrit dans les cellules coloré, et avec la boucle ci-dessous j'inscrit sur la ligne correspondant à la listbox, la quantité tant que la tâche n'est pas achevé

                If Cells(Lig, Colonne + 1) <> "" And compteur <= Durée Then
                 Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
   'même chose qu'en haut mais cette fois-ci A n'est pas sur la feuille et on l'inscrit avant de répéter l'opération du dessus
                ElseIf Application.CountIf(Range("A39:A45"), "=" & A) = 0 And A = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A45").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A45").End(xlUp).Row
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If

          End Select
'je recommence trois fois puisque 3 zone différente, ici " "fourniture
        Case 17 To 26

           Select Case z
           Case 121 To 129
            A = Me("ListBox" & i).Text
            If Application.CountIf(Range("A87:A128"), "=" & A) <> 0 And A <> "" And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
                ElseIf Application.CountIf(Range("A87:A128"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A128").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A128").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If
          End Select
                                    'là "matériel
                Case 27 To 34
                   Select Case z
           Case 130 To 137
            A = Me("ListBox" & i).Text

              If Application.CountIf(Range("A49:A83"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                Cells(Ligne, Colonne).Value = Q
                compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
                ElseIf Application.CountIf(Range("A49:A83"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A83").End(xlUp).Offset(1, 0) = A
               Ligne = Range("A83").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Cells(Ligne, Colonne).Value = Q
               compteur = 1
                Lig = Range("A36").End(xlUp).Row
                If Cells(Lig, Colonne + 1) <> 0 And compteur <= Durée Then
                 Do Until compteur > Durée
                Cells(Ligne, Colonne + 1).Value = Q
                compteur = compteur + 1
                Colonne = Colonne + 1
                Loop
                End If
            End If
          End Select

        End Select
      
    Next z
   Next i

Je sais que c'est un peu le bazar, moi je le comprend bien parce que je connais la finalité, hélas débutant en VBA je fais beaucoup de bétise. Merci pour votre aide car ça doit pas être évident de décrypter le code

cordialement
 

dmoluc

XLDnaute Occasionnel
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

maintenant les boucles Do fonctionnent parfaitement mais ja pense qu'il y a des problèmes avec les For et select case, peu être que la syntaxe n'est pas au point
Enfin un grand merci au moin Do est débloquer et j'espère que je saurais l'utiliser la prochaine fois

A+
 

Bebere

XLDnaute Barbatruc
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

bonjour dmoluc,néné
changement dans initialize,bouton planning
modules de classe pour les listbox groupe matériel,groupe fourniture,groupe métré et tâche
5 minutes pour copier/coller dans un autre classeur ce que j'avais besoin
à l'avenir essaye de faire la même tu auras bien plus de réponse
en plus on ne voit pas l'avancement de ton travail
je trouve cela frustrant
 

Pièces jointes

  • Classeur1.zip
    154.3 KB · Affichages: 30
  • Classeur1.zip
    154.3 KB · Affichages: 33
  • Classeur1.zip
    154.3 KB · Affichages: 26

dmoluc

XLDnaute Occasionnel
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

Bonsoir à tous,

Merci Bebere pour cet exemple dont je vais essayer d'en tirer parti
j'avais ouvert un autre poste car j'ai remarqué que les anciens message perdent vite leurs intérêt sur ce forum et c'est pour ça que l'avancé de mon travail n'est pas présente sur ce post. J'ai quand même réussi a exécuter la boucle mais en changeant son type ; j'ai passé de Do à While !
Avec les même conditions ça tourne pour la première listbox qui s'inscrit sur la feuille, hélas pas de continuation pour les autres ListBox, donc j'ai du faire une erreur quelque part que je n'arrive pas a résoudre

Voilà ou en est le code pour le moment

Code:
Dim stcolonne As Long
 Dim z As Long
Dim Q As Double
Dim A
Dim Lig As Long
 For i = 11 To 34
 For z = 115 To 137
        Select Case i
        Case 11 To 16
           Select Case z
           Case 115 To 120
           
            A = Me("ListBox" & i).Text
            stcolonne = Colonne
            If Application.CountIf(Range("A39:A45"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
               Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
Colonne = stcolonne
                ElseIf Application.CountIf(Range("A39:A45"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A45").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A45").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
            End If

          End Select
          
        Case 17 To 26

           Select Case z
           Case 121 To 129
            A = Me("ListBox" & i).Text
            Colonne = stcolonne
            If Application.CountIf(Range("A87:A128"), "=" & A) <> 0 And A <> "" And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
              While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
                ElseIf Application.CountIf(Range("A87:A128"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A128").End(xlUp).Offset(1, 0) = A
                Colonne = stcolonne
                Ligne = Range("A128").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
            End If
          End Select

                Case 27 To 34
                   Select Case z
           Case 130 To 137
            A = Me("ListBox" & i).Text
            Colonne = stcolonne
              If Application.CountIf(Range("A49:A83"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
                ElseIf Application.CountIf(Range("A49:A83"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A83").End(xlUp).Offset(1, 0) = A
                Colonne = stcolonne
               Ligne = Range("A83").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
            End If
          End Select
      End Select
    Next z
   Next i


j'ai rajouté une condition à l'intérieur de la boucle pour sauter les jours fériés et weekend, par contre je ne sais pas encore pourquoi la boucle effectue son travail 1 fois et ne veux pas le répéter pour les autres listbox ; a mon avis ça doit planter en fin de boucle sans envoyer de message d'erreur, mais bon ça dépasse un peu mes compétences

Code:
Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
Else
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2

Je remets la dernière version du fichier mais il parait que l'userform5 ne fonctionne que sur mon ordinateur ?

http://cjoint.com/?3Huu4eoGTvN

encore merci pour votre aide

bonne soirée
 

Bebere

XLDnaute Barbatruc
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

bonjour Dmoluc
userform5 les 2 objets(combobox???) à côté de début,fin pose problème
attention remis les textbox en ordre
fait quelques corrections et changer code bouton calculer
je regarde ton problème ce soir
 

Pièces jointes

  • ClasseurV1.zip
    153 KB · Affichages: 28
  • ClasseurV1.zip
    153 KB · Affichages: 29
  • ClasseurV1.zip
    153 KB · Affichages: 27

dmoluc

XLDnaute Occasionnel
Re : Condition qui s'exécute même fausse et boucle qui ne s'arrête pas !

en simplifiant le code j'ai réussis à le faire fonctionner finalement sans l'aide de personne mais je vous remercie quand même pour votre aide précieuse car je n'aurais pas pu seul, arrivé jusque là...

Code:
Dim stcolonne As Long
 Dim z As Long
Dim Q As Double
Dim A
Dim Lig As Long
stcolonne = Colonne
For i = 11 To 16
z = 115
Colonne = stcolonne
               A = Me("ListBox" & i).Text
            If Application.CountIf(Range("A39:A45"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
                While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value) And Colonne < 110
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
Colonne = stcolonne
                ElseIf Application.CountIf(Range("A39:A45"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A45").End(xlUp).Offset(1, 0) = A
                Ligne = Range("A45").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
                
While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) And Colonne < 110 Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
End If
        z = z + 1
        Next i
          
          For i = 17 To 25
          z = 121
          
Colonne = stcolonne
            A = Me("ListBox" & i).Text
            Colonne = stcolonne
            If Application.CountIf(Range("A87:A128"), "=" & A) <> 0 And A <> "" And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
              While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) And Colonne < 110 Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
                ElseIf Application.CountIf(Range("A87:A128"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A128").End(xlUp).Offset(1, 0) = A
                Colonne = stcolonne
                Ligne = Range("A128").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               Q = Q / TextBox113.Value
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) And Colonne < 110 Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
            End If
       z = z + 1
     Next i
     
        For i = 27 To 34
       z = 130
    
Colonne = stcolonne
            A = Me("ListBox" & i).Text
            Colonne = stcolonne
              If Application.CountIf(Range("A49:A83"), "=" & A) <> 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Ligne = Application.Match(A, Columns(1), 0)
                Q = CDbl(Me.Controls("TextBox" & z).Value)
                compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) And Colonne < 110 Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
                ElseIf Application.CountIf(Range("A49:A83"), "=" & A) = 0 And A <> "" And Me.Controls("TextBox" & z).Value <> "" Then
                Range("A83").End(xlUp).Offset(1, 0) = A
                Colonne = stcolonne
               Ligne = Range("A83").End(xlUp).Row
               Q = CDbl(Me.Controls("TextBox" & z).Value)
               compteur = 0
                Lig = Range("A36").End(xlUp).Row
               While Cells(Lig, Colonne) = 1 Or compteur <= CDbl(TextBox113.Value)
If Cells(Lig, Colonne) = "" And compteur <= CDbl(TextBox113.Value) And Colonne < 110 Then
Colonne = Colonne + 2
ElseIf Colonne < 110 Then
Cells(Ligne, Colonne).Value = Q
compteur = compteur + 1
Colonne = Colonne + 2
End If
Wend
  
End If
            
z = z + 1
Next i
 

Statistiques des forums

Discussions
312 201
Messages
2 086 175
Membres
103 152
dernier inscrit
Karibu