Signaler

Léger problème sur une macro [Résolu]

Posez votre question palban53 11Messages postés lundi 2 janvier 2017Date d'inscription 7 juin 2017 Dernière intervention - Dernière réponse le 7 juin 2017 à 20:45 par palban53
Bonsoir,
Je me permets de vous déranger en raison d’un léger problème sur une macro que je n’arrive pas corrigé.

En effet, je suis en train de remplir une fiche qui permet de donner des informations sur les articles (fiche article)
Pour ce faire, j’ai décidé de mettre des boutons qui remplissent certaines cellules et pour d’autres elles sont en automatiques.

J’ai un problème pour le remplissage des cellules dans l’onglet « FABRICATION » (appuyer sur le bouton "Fabrication" dans l'onglet "choix" ou "retour au choix")
- ligne 165 (partie dédiée au « PCB (Carton) »)
- ligne 173 (partie dédiée au « PALETTE-BAC»)

J’ai un problème pour le remplissage des cellules dans l’onglet « NEGOCE»
- ligne 72 (partie dédiée au « PCB (Carton) »)
- ligne 80 (partie dédiée au « PALETTE-BAC»)

Par exemple pour l'onglet "FABRICATION"
Je clique sur le bouton « valider » que vous pouvez constater en ligne 163 et 171 ET il y a seulement la 1ere cellule qui se remplis (cellule C165 et C173) pour le reste (cellules F165 / I165 et F173/ I173) aucune donnée appairait.

Pour regarder ce que j’ai fait, aller voir les macros suivantes :
- « aide_cdt_carton_F » (lié à l’onglet « FABRICATION »)  CARTON
- « aide_cdt_carton_N » ( lié à l’onglet « NEGOCE »)  CARTON
- "aide_cdt_palette_F" (lié à l’onglet « FABRICATION »)  PALETTE
- "aide_cdt_palette_N" ( lié à l’onglet « NEGOCE »)  PALETTE




VOICI LE DEBUT DE LA 1ERE MACRO CONCERNEE

Sub aide_cdt_carton_N() 'vérifier dans quel type de vente on est pour negoce
“If ThisWorkbook.Sheets(2).Range("E127").Value = "1" Then
If ThisWorkbook.Sheets(2).Range("C70").Value <> "" Then

If ThisWorkbook.Sheets(2).Range("C70").Value = "EMB 003" Then
ThisWorkbook.Sheets(2).Range("C72").Value = "60"
ThisWorkbook.Sheets(2).Range("F72").Value = "40"
ThisWorkbook.Sheets(2).Range("I72").Value = ""
End »

Comme vous le voir j'ai un déclencheur en cellule E127 pour l'onglet "NEGOCE" et dés que la valeur est différente de l'ensemble vide et qu'il est noté "EMB 003" alors cela doit noté 60 dans la cellule C72 (longueur) puis 40 dans la cellule F72 (largeur) et rien dans la cellule I72 (hauteur)



Merci beaucoup pour votre aide, je ne sais pas pourquoi cela ne déclenche que pour la 1ere cellule et pas les 2 autres.

Merci beaucoup pour votre aide. Etant débutant, je pense que ce problème est très simple corriger vous concernant.

Si vous avez la moindre question n'hésitez pas à me recontacter.


Voici le lien du fichier : http://www.cjoint.com/c/GFgsQCrXjat

Merci beaucoup de votre aide

Cordialement
Utile
+0
plus moins
Bonjour,

Votre souci est lie au declanchement de la procedure evenementielle

Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Source As Range)

Call macro

End Sub

Qui se declanche systematiquement a chaque changement de valeur cellule ou clic sur un bouton et arrete la procedure en court d'excecution . Pour palier a ceci, vous devez utilise l'instruction suivant
Application.EnableEvents a false/true pour desactiver/activer le declanchement des evenements Excel et surtout ajouter un code qui sur erreur activera les evenements Excel sinon marche plus, obliger de fermer le fichier
Cette ligne d'instruction est a mettre en debut (a false)et fin (a true) des procedures qui modifient les feuilles NEGOCE et FABRICATION

Maintenant pourquoi :
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Source As Range)

Call macro

End Sub

Car a chaque remplissage de cellule, elle s'execute

A+ pour plus d'explications si necessaire
palban53 11Messages postés lundi 2 janvier 2017Date d'inscription 7 juin 2017 Dernière intervention - 7 juin 2017 à 20:45
Bonsoir,
Merci beaucoup pour votre aide si précieuse et si rapide.

Cela m'a permis de pallier à mes problèmes.

Le "call macro" permet de faire fonctionner toutes les macros en automatique dans le document.
Je les insère au fur et à mesure et cela permet d'avoir plusieurs qui fonctionnent en même temps.

Encore merci

Bonne soirée
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !