Optimisation code VBA calculs date
Résolu
Coco-8
Messages postés
92
Date d'inscription
Statut
Membre
Dernière intervention
-
Coco-8 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
Coco-8 Messages postés 92 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je me suis lancé, depuis peu, dans la "vraie création de macro", sans passer par l'enregistreur de macro. J'en ai créé une qui fonctionne plutôt bien mais je bloque depuis hier sur un petit détails qui a son importance... Je vous explique :
J'ai un fichier excel où une ligne = une commande client.
Au milieu de ces lignes, il y a quelques lignes correspondants aux OF (Ordre de fabrication).
Pour qu'une commande puisse être livré à son client, il faut donc qu'il y ait un OF.
Pour chaque commande, ma macro récupère la date la plus proche de l'OF du modèle commandé pour connaitre à quelle date on peut répondre aux besoins des clients, et l'insère dans la colonne H, et retire la quantité à livrer dans la colonne OF.
Mon code Vba fonctionne bien mais dans le cas où pour répondre à la quantité d'une commande il faut aller dans consommer 2 OF, alors mon code à ses limites (voir RENAULT CLIO 3, Concessionnaire Amiens cde=5).
Sub CalculsDate()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim NbLigne As Integer 'Nombre de ligne/Nb de commande à traiter
NbLigne = 2
While Cells(NbLigne, 1) <> ""
NbLigne = NbLigne + 1
Wend
NbLigne = NbLigne - 1
MsgBox (NbLigne)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
i = 2
For i = 2 To NbLigne
v = 2
While (Cells(v, 7) < Cells(i, 6).Value Or Cells(v, 1) <> Cells(i, 1)) And v <= NbLigne
v = v + 1
Wend
If v <= NbLigne And Cells(i, 4) <> "OF" Then
Cells(i, 8) = Cells(v, 3).Value
Cells(v, 7) = Cells(v, 7).Value - Cells(i, 6).Value
Else
If Cells(i, 4) = "OF" Then
Cells(i, 8) = "OF"
Else
Cells(i, 8) = "PAS DE PROD"
End If
End If
Next
MsgBox ("CALCULS DATE TERMINE")
End Sub

Si quelqu'un aurait une solution à me proposer je vous en serai énormément reconnaissant.
Je n'ai sans doute pas était suffisamment claire, donc n'hésitez pas si vous voulez d'autres informations.
Je vous mets mon fichier en pièce-jointe
https://mon-partage.fr/f/GfpCVXs8/
Merci beaucoup :)
Je me suis lancé, depuis peu, dans la "vraie création de macro", sans passer par l'enregistreur de macro. J'en ai créé une qui fonctionne plutôt bien mais je bloque depuis hier sur un petit détails qui a son importance... Je vous explique :
J'ai un fichier excel où une ligne = une commande client.
Au milieu de ces lignes, il y a quelques lignes correspondants aux OF (Ordre de fabrication).
Pour qu'une commande puisse être livré à son client, il faut donc qu'il y ait un OF.
Pour chaque commande, ma macro récupère la date la plus proche de l'OF du modèle commandé pour connaitre à quelle date on peut répondre aux besoins des clients, et l'insère dans la colonne H, et retire la quantité à livrer dans la colonne OF.
Mon code Vba fonctionne bien mais dans le cas où pour répondre à la quantité d'une commande il faut aller dans consommer 2 OF, alors mon code à ses limites (voir RENAULT CLIO 3, Concessionnaire Amiens cde=5).
Sub CalculsDate()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim NbLigne As Integer 'Nombre de ligne/Nb de commande à traiter
NbLigne = 2
While Cells(NbLigne, 1) <> ""
NbLigne = NbLigne + 1
Wend
NbLigne = NbLigne - 1
MsgBox (NbLigne)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
i = 2
For i = 2 To NbLigne
v = 2
While (Cells(v, 7) < Cells(i, 6).Value Or Cells(v, 1) <> Cells(i, 1)) And v <= NbLigne
v = v + 1
Wend
If v <= NbLigne And Cells(i, 4) <> "OF" Then
Cells(i, 8) = Cells(v, 3).Value
Cells(v, 7) = Cells(v, 7).Value - Cells(i, 6).Value
Else
If Cells(i, 4) = "OF" Then
Cells(i, 8) = "OF"
Else
Cells(i, 8) = "PAS DE PROD"
End If
End If
Next
MsgBox ("CALCULS DATE TERMINE")
End Sub
Si quelqu'un aurait une solution à me proposer je vous en serai énormément reconnaissant.
Je n'ai sans doute pas était suffisamment claire, donc n'hésitez pas si vous voulez d'autres informations.
Je vous mets mon fichier en pièce-jointe
https://mon-partage.fr/f/GfpCVXs8/
Merci beaucoup :)
A voir également:
- Optimisation code VBA calculs date
- Code ascii - Guide
- Optimisation pc - Accueil - Utilitaires
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
3 réponses
Bonjour,
Je ne comprends pas ce que tu veux faire dans ce cas. Peux-tu détailler ?
Cordialement.
Daniel
Je ne comprends pas ce que tu veux faire dans ce cas. Peux-tu détailler ?
Cordialement.
Daniel
Bonjour à tous,
Je confirme, pas clair du tout.
Il y a des commandes, ok.
Mais où trouve-t-on ce qui est produit et à quelle date pour piocher dedans ?
Il n'y a qu'un seul tableau...
eric
Je confirme, pas clair du tout.
Il y a des commandes, ok.
Mais où trouve-t-on ce qui est produit et à quelle date pour piocher dedans ?
Il n'y a qu'un seul tableau...
eric
Merci à vous deux pour vos réponses.
Il est difficile d'expliquer ce que ma macro réalise et ce que je souhaite réaliser, désolé.
Après une journée et demie dessus, j'ai trouvé la solution en rajoutant une boucle dans boucle aux boucles déjà présentes :). C'est compliqué mais tant que ça marche...
Merci
Il est difficile d'expliquer ce que ma macro réalise et ce que je souhaite réaliser, désolé.
Après une journée et demie dessus, j'ai trouvé la solution en rajoutant une boucle dans boucle aux boucles déjà présentes :). C'est compliqué mais tant que ça marche...
Merci