Macro pour fichier de stock
Matt 666
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
Matt 666 Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
Matt 666 Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je me permets de revenir vers vous (ça faisait longtemps !), j'ai un problème sur une macro Excel de fichier de stock courant. Il fonctionne très bien en soi, mais c'est plutôt la fonction de suppression de ligne ou de colonne qui merde si la macro est en route. En gros si j'essaie de supprimer une ligne, Excel supprime cette ligne ET celle d'en dessous, systématiquement.
Vous me direz, ya qu'à mettre la macro en pause et supprimer les lignes ou colonnes, mais ça peut devenir très vite chronophage, et j'aimerais bien savoir d'où vient ce maudit problème !!

A propos : Lorsque le magasinier reçoit des panneaux (l'exemple en PJ), admettons la ligne 4 : Méla 8mm, Il rentre la quantité de panneaux dans la colonne F et la macro ajoute cette quantité à la colonne H et M. S'il sort une matière c'est pareil, sauf que c'est une soustraction et un décalage de colonne. Colonne I K et M.
Voici la salve de questions :
1- La macro est insérée dans chaque feuille. Je ne sais pas si c'est une bonne idée, en tout cas ça fonctionne. C'est exactement la même macro pour toutes les feuilles.

2- J'ai mis en place une gestion des erreurs pour éviter que Excel plante si on supprime un ligne ou colonne. Ca a le mérite de ne plus planter mais ça apporte le bug décrit plus haut : Supprimer la ligne et celle d'en dessous pour le cas d'une suppression de ligne.
3- Voici la macro en question. Dites-moi si j'ai merdé qqpart. C'est complètement possible vu mon maigre niveau en Vbe.
Le fichier est en PJ ici, pour vous faire une idée.
https://www.cjoint.com/c/JEtpV0dQgCf
Tous les conseils sont bons, n'hésitez pas.
Merci !
Matt.
Je me permets de revenir vers vous (ça faisait longtemps !), j'ai un problème sur une macro Excel de fichier de stock courant. Il fonctionne très bien en soi, mais c'est plutôt la fonction de suppression de ligne ou de colonne qui merde si la macro est en route. En gros si j'essaie de supprimer une ligne, Excel supprime cette ligne ET celle d'en dessous, systématiquement.
Vous me direz, ya qu'à mettre la macro en pause et supprimer les lignes ou colonnes, mais ça peut devenir très vite chronophage, et j'aimerais bien savoir d'où vient ce maudit problème !!

A propos : Lorsque le magasinier reçoit des panneaux (l'exemple en PJ), admettons la ligne 4 : Méla 8mm, Il rentre la quantité de panneaux dans la colonne F et la macro ajoute cette quantité à la colonne H et M. S'il sort une matière c'est pareil, sauf que c'est une soustraction et un décalage de colonne. Colonne I K et M.
Voici la salve de questions :
1- La macro est insérée dans chaque feuille. Je ne sais pas si c'est une bonne idée, en tout cas ça fonctionne. C'est exactement la même macro pour toutes les feuilles.

2- J'ai mis en place une gestion des erreurs pour éviter que Excel plante si on supprime un ligne ou colonne. Ca a le mérite de ne plus planter mais ça apporte le bug décrit plus haut : Supprimer la ligne et celle d'en dessous pour le cas d'une suppression de ligne.
3- Voici la macro en question. Dites-moi si j'ai merdé qqpart. C'est complètement possible vu mon maigre niveau en Vbe.
Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
'gestion des erreurs
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'cellule remplie dans la colonne E ou H
If Not Intersect(Target, Range("F:F, I:I")) Is Nothing Then
Dim Total As Single
'enregistrer la valeur
Total = Target(1, 3).Value
'valeur différente de 0 et numérique
If IsNumeric(Target) _
And Not Target.Value = 0 Then
'Remplir la cellule stock
Target(1, 3).Value = Total + Target.Value
'Remplir la cellule date
Target(1, 2) = Now
'Effacer la valeur rentrée
Target.Value = ""
End If
End If
'gestion des erreurs
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Le fichier est en PJ ici, pour vous faire une idée.
https://www.cjoint.com/c/JEtpV0dQgCf
Tous les conseils sont bons, n'hésitez pas.
Merci !
Matt.
Configuration: Windows / Firefox 77.0
A voir également:
- Macro pour fichier de stock
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
Le problème vient du fait que lorsque tu supprimes une ligne, la suivante est sélectionnée et ta procédure telle quelle est faite efface les données de la sélection.
Remplace
par
Cela peut solutionner ton problème
Cordialement
Le problème vient du fait que lorsque tu supprimes une ligne, la suivante est sélectionnée et ta procédure telle quelle est faite efface les données de la sélection.
Remplace
Target.Value = ""
par
If Target.Count = 1 Then Target.Value = ""
Cela peut solutionner ton problème
Cordialement
Bonjour ALS35,
Déjà gros merci pour avoir répondu si rapidement.
Super ça fonctionne... Presque !
La suppression d'une ligne complète n'entraine plus de suppression de la ligne d'en dessous en plus de la ligne à supprimer, c'est déjà super.
Maintenant la suppression de la ligne entraine le remplacement ou l'insertion de la date dans la cellule de la ligne d'en dessous, en colonne B.
Par exemple je compte supprimer la ligne 31. Pour info la cellule sélectionnée dans l'image "Noir" est en colonne B. C'est celle qui va être remplacée par la date.

Voici ce que ça donne après la suppression :

La ligne a bien été supprimée, celle d'en dessous n'a pas été supprimée aussi, mais la cellul B31 a été modifiée par la date.
Alors je me doute bien que c'est la ligne
Déjà gros merci pour avoir répondu si rapidement.
Super ça fonctionne... Presque !
La suppression d'une ligne complète n'entraine plus de suppression de la ligne d'en dessous en plus de la ligne à supprimer, c'est déjà super.
Maintenant la suppression de la ligne entraine le remplacement ou l'insertion de la date dans la cellule de la ligne d'en dessous, en colonne B.
Par exemple je compte supprimer la ligne 31. Pour info la cellule sélectionnée dans l'image "Noir" est en colonne B. C'est celle qui va être remplacée par la date.

Voici ce que ça donne après la suppression :

La ligne a bien été supprimée, celle d'en dessous n'a pas été supprimée aussi, mais la cellul B31 a été modifiée par la date.
Alors je me doute bien que c'est la ligne
Target(1, 2) = Nowqui est mise en cause. J'ai essayé 2 ou 3 trucs mais ça ne fonctionne pas. Des idées ?
Bonjour,
C'est toujours le même problème, alors modifie ton code comme ceci pour ne faire les actions que si une seule cellule est sélectionnée (au lieu de la ligne entière)
Cordialement
C'est toujours le même problème, alors modifie ton code comme ceci pour ne faire les actions que si une seule cellule est sélectionnée (au lieu de la ligne entière)
'Si la sélection ne comporte qu'une seule cellule If Target.Count = 1 Then 'valeur différente de 0 et numérique If IsNumeric(Target) _ And Not Target.Value = 0 Then 'Remplir la cellule stock Target(1, 3).Value = Total + Target.Value 'Remplir la cellule date Target(1, 2) = Now 'Effacer la valeur rentrée Target.Value = "" End If End If
Cordialement