pedrito53
Messages postés12Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention 1 juin 2009
-
1 janv. 2009 à 17:36
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024
-
2 janv. 2009 à 11:49
Bonjour à tous, tout d'abord bonne année!
J'ai un problème qui me bloque aujourd'hui, c'est que j'ai un projet à finir pour la fin de la semaine et là je suis bloqué sur la résolution automatique d'un tableau. En fait, j'ai trop boucles For Next qui s'entrecroisent avec des If dedans et je ne sais pas trop si le code est bon (d'ailleurs, il n'est pas bon car il ne fonctionne pas!)
Donc voilà le morceau de code:
Dim col As Integer
Dim z As Integer
Dim r As Integer
col = 53
z = 2
r = 2
For col = 53 To 2
For r = 2 To 13
If IsEmpty(Sheets("feuil4").Cells(r, col)) = False Then
For z = 2 To 13
If Sheets("Feuil3").Cells(z, 18) = Sheets("feuil3").Cells(r, 1) Then
Sheets("Feuil4").Cells(z, col - Sheets("Feuil3").Cells(r, 5)).Value =
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 1 janv. 2009 à 22:37
Bonjour,
J'ai réindenté ton code et viré les incrémentations inutiles :
Dim col As Integer
Dim z As Integer
Dim r As Integer
Dim a As String
Dim b As Integer
Dim c As Integer
col = 53
z = 2
r = 2
For col = 53 To 2 Step -1
For r = 2 To 13
If IsEmpty(Sheets("feuil4").Cells(r, col)) = False Then
a = Sheets("Feuil3").Cells(z, 18)
End If
b = Sheets("Feuil3").Cells(r, 5)
c = col - b
For z = 2 To 13
If a = Sheets("feuil3").Cells(r, 1) Then
Sheets("Feuil4").Cells(z, c) = (Sheets("Feuil3").Cells(z, 17).Value) * (Sheets("feuil4").Cells(r, col).Value)
End If
Next z
Next r
Next col
Donnes des noms plus explicites à tes variables stp.
a = Sheets("Feuil3").Cells(z, 18)
Alors que tu es en-dehors de la boucle, tu ne peux pas être sûr de la valeur de z.
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 2 janv. 2009 à 11:49
Bonjour,
à la place de :
Sheets("Feuil4").Cells(z, c) = (Sheets("Feuil3").Cells(z, 17).Value) * (Sheets("feuil4").Cells(r, col).Value)
mettre :
Sheets("Feuil4").Cells(z, c) = Sheets("Feuil4").Cells(z, c) + (Sheets("Feuil3").Cells(z, 17).Value) * (Sheets("feuil4").Cells(r, col).Value)
Si ton pb est résolu, merci de mettre le(s) message(s) en "réponse acceptée"?
Questions :
-Pourquoi faire :
Else
End if
Si pas besoin ?
-Pourquoi tu incrémente et décrémente à la fin de tes for, cela est fait automatiquement, pour des pas autres que 1, utilise STEP : For i=1 to 5 step 2 OU For i=5 to 2 step -1
Le For incrémente et tu décrémente, boucle infinie en vue.
pedrito53
Messages postés12Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention 1 juin 2009 1 janv. 2009 à 21:55
Slt, j'incrémente pour vérifier chaque cellule d'un tableau. Si une cellule est remplie, je compare et je dois la copier sur une autre cellule en utilisant une formule avec les délais et plein d'autres choses.
En fait, je suis en train d'automatiser un tableau de MRP 0. Je ne sais pas si tu vois ce que c'est??
Merci pour ta réponse. Mais comment je fait alors pour décrémenter. Je n'est pas très bien saisie l'histoire du STEP???
pedrito53
Messages postés12Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention 1 juin 2009 1 janv. 2009 à 22:28
Pourrai tu m'aider à cherche l'erreur, enfin le problème car il n'y a pas d'erreur à priori mais rien n'est copier dans mon tableau comme je le demande??
Dim col As Integer
Dim z As Integer
Dim r As Integer
Dim a As String
Dim b As Integer
Dim c As Integer
col = 53
z = 2
r = 2
For col = 53 To 2 Step -1
For r = 2 To 13 If IsEmpty(Sheets("feuil4").Cells(r, col)) False Then a Sheets("Feuil3").Cells(z, 18)
b = Sheets("Feuil3").Cells(r, 5)
c = col - b
For z = 2 To 13 If a Sheets("feuil3").Cells(r, 1) Then Sheets("Feuil4").Cells(z, c) (Sheets("Feuil3").Cells(z, 17).Value) * (Sheets("feuil4").Cells(r, col).Value)
z = z + 1
Next z
r = r + 1
Next r
Next col
pedrito53
Messages postés12Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention 1 juin 2009 1 janv. 2009 à 22:47
Il y a du mieux car des valeurs apparaissent dans le tableau. Malheureusement, ce ce sont pas les bonnes!
Il me met des 0 un peu partout, pourquoi?
Voilà le nouveau code:
Dim col As Integer
Dim z As Integer
Dim r As Integer
Dim a As String
Dim b As Integer
Dim c As Integer
col = 53
z = 2
r = 2
For col = 53 To 2 Step -1
For r = 2 To 13
If IsEmpty(Sheets("feuil4").Cells(r, col)) = False Then
For z = 2 To 13
a = Sheets("Feuil3").Cells(z, 18)
b = Sheets("Feuil3").Cells(r, 5)
c = col - b
If a = Sheets("feuil3").Cells(r, 1) Then
Sheets("Feuil4").Cells(z, c) = (Sheets("Feuil3").Cells(z, 17).Value) * (Sheets("feuil4").Cells(r, col).Value)
End If
Next z
End If
Next r
Next col
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 1 janv. 2009 à 23:11
Bonjour,
Je pensais que c'était faisable sans, mais à la réflexion, pas forcément.
Tu trouveras l'adresse pour me l'envoyer sur mon site (section contact) (clique sur l'image en-dessous de ce texte).
pedrito53
Messages postés12Date d'inscriptiondimanche 7 septembre 2008StatutMembreDernière intervention 1 juin 2009 2 janv. 2009 à 00:52
Merci pour ton aide précieuse mais j'ai finalement réussi à trouver la solution!!
Une dernière question, comment pourrai-je dire au valeur de s'additionner car parfois, plusieurs valeurs s'inscrivent dans une même cellule et excel ne garde que la dernière rentrée dans la cellule. Donc cela pose problème!!