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):
La condition qui ne fonctionne pas et la boucle qui ne s'arrête pas:
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
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