Probleme de macro sur modif cellule multiple

Bonsoir, voilà mon problème je voudrais replacer les boutons " Valider FM1, 2, 3, 4 " par la cellule si non vide

Si " D2 " n'ai pas vide lance la macro " Saisie_sapette_FM_1"

Si " H2 " n'ai pas vide lance la macro " Saisie_sapette_FM_2 "

Si " L2 " n'ai pas vide lance la macro " Saisie_sapette_FM_3 "

Si " L2 " n'ai pas vide lance la macro " Saisie_sapette_FM_4 "

J'utilise une sapette pour saisir les données dans les cellules grises ( code barre )

Voilà le code que j'ai mis dans la feuille " FM " mais ne marche pas ?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$2" And Target.Value = "" Then Saisie_sapette_FM_1

If Target.Address = "$H$2" And Target.Value = "" Then Saisie_sapette_FM_2

If Target.Address = "$L$2" And Target.Value = "" Then Saisie_sapette_FM_3

If Target.Address = "$P$2" And Target.Value = "" Then Saisie_sapette_FM_4

End Sub

Je n’ai laissé que 2 feuilles de mon fichier, trop gros ( 1.5 Mo ) si besoin mes mots de passe

mot de passe onglet FM " rv "

mot de passe onglet Base Fraises-mères " c502018 "

Merci d’avance pour vos réponse.

20essai-0001.rar (234.63 Ko)

Bonsoir Paldor, bonsoir le forum,

Pour éviter toute confusion je préfère faire appel à une procédure en utilisant la syntaxe Nom_du_Module.Nom_de_la_procédure :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" And Target.Value = "" Then Saisie_sapette_FM.Saisie_sapette_FM_1
If Target.Address = "$H$2" And Target.Value = "" Then Saisie_sapette_FM.Saisie_sapette_FM_2
If Target.Address = "$L$2" And Target.Value = "" Then Saisie_sapette_FM.Saisie_sapette_FM_3
If Target.Address = "$P$2" And Target.Value = "" Then Saisie_sapette_FM.Saisie_sapette_FM_4
End Sub

Mais le problème n'est pas là... Ça ne peut pas fonctionner car tu utilises la macro événementielle Change de l'onglet FM alors que tu ne modifies aucune cellule de cet onglet mais des Comboboxes issues de la barre d'outils Formulaire, placées au-dessus de ces cellules. Donc il te faut modifier le code affecté aux différentes ComboBoxes (voir le module Référence). Comme il est déjà copieusement rempli, je te laisse le soin de finir...

Et si c'est vraiment toi qui a fait le fichier, c'est couillon que tu poses cette question ! Non ?!...

Bonjour ThauThème et merci pour ta réponse, il faut dans mon fichier garder les deux solution faire la saisie avec sapette mais si outils nouveaux il faut le sélectionner avec les ComboBoxes " référence outils " car ces se fichier qui crée la fiche de suivi des outils avec les code-barres .

Une fois les codes-barres réaliser je me serre que des fiche pour les recréés (évite les erreurs de saisie) le fichier joint n’a qu’une partie des outils pour alléger le fichier

J'ai 4 type d'outils "FM" "CR" "OP" "OB" j'ai se code pour "CR" et qui marche mais je n'arrive pas à le modifier pour faire quatre fiches "CR" ne fait que une fiche.

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D1")) Is Nothing Then

If Target.Cells(1, 1) = "" Then Exit Sub

Call Saisie_sapette_CR_1 'ici le nom de ta macro précéde de Call

End If

End Sub

• Je ne connais rien au VBA je fais mes code grâce à internet et Excel-pratique j’adapte je fais des essais

Re,

Pardon Paldor, j'avais mal lu l'énoncé et je m'étais bien emmêlé les pinceaux sur ce coup là... La solution est bien plus simple tu as mis = (égale) alors qu'il faut <> (différent) :

Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Address, Target.Value
If Target.Address = "$D$2" And Target.Value <> "" Then Saisie_sapette_FM_1
If Target.Address = "$H$2" And Target.Value <> "" Then Saisie_sapette_FM_2
If Target.Address = "$L$2" And Target.Value <> "" Then Saisie_sapette_FM_3
If Target.Address = "$P$2" And Target.Value <> "" Then Saisie_sapette_FM_4
End Sub

Bonjour ThauThème et merci pour ton aide

Le code s’arrête sur " Debug.Print Target.Address, Target.Value " et j’ai le message d’erreur suivant

Erreur d'exécution '13':

Incompatibilité de type

Re,

Arf ! désolé encore une fois !... Décidément je ne fais que des co***ries ! Supprime carrément la ligne elle ne sert pas dans le code. Debug.Print n'est utile que dans l'éditeur VBE et me permettait de faire des tests. Ce qui est inquiétant en revanche c'est qu'elle plante car elle ne devrait pas...

Re Bonsoir ThauThème toujours la même erreur et la sa s’arrête à

If Target.Address = "$D$2" And Target.Value <> "" ThenSaisie_sapette_FM_1

Re,

Je ne comprends pas ! Dans le fichier que tu as fourni je n'ai aucun bug avec ce code...

Bonjour ThauThème oui tu a raison sur le fichier alléger ça marche, mais sur mon fichier complet non

Sur une autre feuille j’ai se code

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D1")) Is Nothing Then

If Target.Cells(1, 1) = "" Then Exit Sub

Call Saisie_sapette_CR_1 'ici le nom de ta macro précéde de Call

End If

End Sub

Car j’ai 4 sorte d’outils différents "CR" " FM" "OP" "OB" avec les même saisies. Comment envoyer le fichier complet qui fait 1,55 Mo ?

Merci pour ton aide

Bonjour,

Passe par un hébergeur (Cijoint.com / WeTransfer) ou aute... Il y en a plein !

Bonjour ThauThème voilà le lien pour le fichier complet merci

Bonjour ThauThème Bien voilà le lien compresser merci

https://www.cjoint.com/c/EIdcDU6bfEM

Bonsoir Paldor, bonsoir le forum,

Désolé j'ai oublié de préciser qu'avec cjoint il fallait zipper le fichier sinon il est inexploitable. Ne me demande pas pourquoi je n'en sais rien... Dans l'explorateur de fichiers, clique sur ton fichier Excel avec le bouton droit et fait : Envoyer vers / Dossier compressé. Ça créé un fichier Zip et c'est celui-ci que tu dois envoyer...

Bonjour ThauThème Bien voilà le lien compresser merci

https://www.cjoint.com/c/EIdcDU6bfEM

Bonjour Paldor, bonjour le forum

Bon j'ai ouvert ton fichier et tout semble fonctionner correctement chez moi. En tout cas les macros se déclenchent dans l'onglet FM à la modification/édition des cellules D2, H2, L2 et P2 (je n'ai fait que vérifier qu'elle étaient lancées, je ne les ai pas exécutées jusqu'au bout).

Après tu m'as parlé d'un autre code mais pour l'onglet CR et lui aussi fonctionne à la modification/édition de la cellule D1.

Le Call est facultatif qu'on le mette ou pas la procédure est lancée. Comme je t'avais dit dans mon premier post je préfère lancer les procédures en faisant Nom_du_module.Nom_de_la_procédure pour deux raisons :

• la première est que dès que j'ai tapé le point après le nom du module, la liste des procédure s'affiche dans VBE.

• la seconde est que si deux procédures portent le même nom dans deux modules différents, je suis sûr de lancer la bonne

Ton code deviendrait alors :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$2" And Target.Value <> "" Then Saisie_sapette_FM.Saisie_sapette_FM_1
If Target.Address = "$H$2" And Target.Value <> "" Then Saisie_sapette_FM.Saisie_sapette_FM_2
If Target.Address = "$L$2" And Target.Value <> "" Then Saisie_sapette_FM.Saisie_sapette_FM_3
If Target.Address = "$P$2" And Target.Value <> "" Then Saisie_sapette_FM.Saisie_sapette_FM_4
End Sub

Sinon juste une remarque :

• Dans l'onglet CR la macro se lance à la modification / édition en ligne 1

• Dans l'onglet FM la macro se lance à la modification / édition en ligne 2

Est-ce normal puisque la ligne 1 de FM contient elle aussi des espèces de champ ?

Bonjour Thau Thème, ne marche pas s’arrête à

If Target.Address = "$D$2" And Target.Value <> "" ThenSaisie_sapette_FM_1

J’utilisse les deux code le premier et la "Réference" le second et "l’atelier"

La différence entre "CR" et "FM" dans CR je n’ai pas l’atelier dans le code barre.

Pour les « FM » j’ai dans le code-barres l’atelier et par précaution pour éviter les erreurs je le saisie.

Dans la feuille "Feuil1" j’ai mis les saisie en jaune c’est la copie de la fiche avec sapette pour essai

Si je saisie avec la sapette "D1" & "D2" et que je valise avec le bouton "Valider FM1" tous marche, je choisie ensuite « Mémoire », Fournisseur et la ma fiche et complète .

Mais je peux saisir toute les données avec mais listes de choix si nouveau outil ou si outil sans code-barre.

Je te remercie de ta patience et du temps passer sur mon problème.


Dans la feuille « Feuil1 » j’ai mis les saisie en jaune c’est la copie de la fiche avec sapette pour essai

oups tu na pas les couleur la cellule et B3 et B4

Bonjour ThauThème, je te remercie pour tes réponse j'ai trouver la solution voici le code a mettre dans la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D1")) Is Nothing Then
If Target.Cells(1, 1) = "" Then Exit Sub
Saisie_sapette_FM.Saisie_sapette_FM_1  'ici le nom de ta macro
End If
If Not Intersect(Target, Range("H1")) Is Nothing Then
If Target.Cells(1, 1) = "" Then Exit Sub
Saisie_sapette_FM.Saisie_sapette_FM_2  'ici le nom de ta macro
End If
If Not Intersect(Target, Range("L1")) Is Nothing Then
If Target.Cells(1, 1) = "" Then Exit Sub
Saisie_sapette_FM.Saisie_sapette_FM_3  'ici le nom de ta macro
End If
If Not Intersect(Target, Range("P1")) Is Nothing Then
If Target.Cells(1, 1) = "" Then Exit Sub
Saisie_sapette_FM.Saisie_sapette_FM_4  'ici le nom de ta macro
End If
End Sub
Rechercher des sujets similaires à "probleme macro modif multiple"