Si la case contient le mot "XXX" alors mettre un chiffre [Résolu]

Tsoin42

XLDnaute Nouveau
Bonsoir,

Je vais essayer d'expliquer au mieux.
Pour mon stage, je dois optimiser un tableau de suivi de production dans lequel les opérateurs, lorsqu'ils rencontrent un problème (panne, non conformité, etc) le notifie par une explication dans une ligne.
Or je souhaite calculer ces problèmes en les classant par thèmes.

La formule que je cherche permettrai de faire en gros ceci:
moulagepanneerreur Xerreur Y
piece mal moulée1
machine en panne1

Lorsque quelqu'un marque le mot "moule" ou "moulage", un 1 se mette automatiquement dans la case adéquate.

Quelqu'un a une idée? Je suis très nulle en macro par conséquent ce serait mieux pour moi de faire sans mais si vraiment c'est impossible, je suis preneuse.

Merci d'avance,

Cordialement,

Tsoin ! :D
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonsoir,

.Quelqu'un a une idée? Je suis très nulle en macro par conséquent ce serait mieux pour moi de faire sans mais si vraiment c'est impossible, je suis preneuse.
Tsoin ! :D

Bnjour Tsoin, le Forum

Hélas en Formule c'est moi qui suis nul, mais en VBA j'ai une solution très simple.
En plus je m'appuie sur une table de Paramétrage, ce qui donne toute évolution simple et facile, il suffit d'indiquer dedans les mots clefs à chercher et leur colonne de destination...

Le code est ultra simple, je fais deux plages et ensuite une double boucle pour détecter les mots clefs "Paramètre" qui sont n'importe où dans le texte d'une cellule de la colonne A de la "Base"... C'est très simple à comprendre

La seule difficulté sera cette partie :
If InStr(MaCell, MonParaCell) Then

InStr Fonction = Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.

Et puis le Option Compare Text en haut du module 1, c'est pour ne pas avoir de soucis si c'est en MAJUSCULE ou pas...

Voilà rien de bien sorcier... Par contre ce n'est volontairement pas optimisé pour de grands tableaux, car sinon le code serait bien plus lourd à comprendre.

Entretemps je pense que nos "formulistes" auront aussi une solution probablement plus adpatée à ta demande, mais au cas où c'est interressant de connaitre cette solution.

Bonne découverte
@+Thierry
 

Pièces jointes

  • tsoin42_Demo_TheDetector_Thierry_V00.xlsm
    22.2 KB · Affichages: 136

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Re Tsoin

Et au cas où, voici la version 1 améliorée sans trop de difficultés pour te signaler si il y a un souci :
>>> ATTENTION <<< Type d'erreur non définie !!!

Là c'est le "plus" de VBA :)

Au pire ca te servira à tester la même chose en formule si tu ne retiens pas cette solution VBA pour ton stage.

Cordialement,
@+Thierry
 

Pièces jointes

  • tsoin42_Demo_TheDetector_Thierry_V01.xlsm
    22.7 KB · Affichages: 134

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonsoir,

La formule que je cherche .../...
Quelqu'un a une idée? Je suis très nulle en macro par conséquent ce serait mieux pour moi de faire sans mais si vraiment c'est impossible, je suis preneuse.

Merci d'avance,

Cordialement,

Tsoin ! :D

Salut le Forum

Alors pas de "Formuliste" ? :cool:, un petit SommeProd combiné Texte.; une Formule Matricielle... où je ne sais quoi ?
Car Tsoin n'a pas l'air d'aimer ma solution VBA... Et moi et les Formules...

@+Thierry
 

tototiti2008

XLDnaute Barbatruc
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonsoir Tsoin, Bonsoir Thierry, :)

un essai en formule :

à placer en B2 de la feuille DATA

Code:
=SI(SOMME(ESTNUM(CHERCHE(PARAMETRES!$A$2:$A$8;DATA!$A2))*1)>0;SI(COLONNE()=INDEX(PARAMETRES!$B$2:$B$8;EQUIV(VRAI;ESTNUM(CHERCHE(PARAMETRES!$A$2:$A$8;DATA!$A2));0));1;"");SI(COLONNE()=2;">>> ATTENTION <<<";""))

et à valider par Ctrl+Maj+Entrée

puis à recopier vers le bas puis la droite
 

Tsoin42

XLDnaute Nouveau
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonjour !

Merci Thierry pour ta proposition c'est exactement ce que je cherchais. Cependant, quand je l'applique sur mon fichier ça ne marche pas (C'aurait été trop simple =D). Quand je clique sur le bouton de mon fichier ça ne fait rien.

Le code du premier fichier est le suivant :
Option Explicit
Option Compare Text

Sub TheDetector()
Dim MaPlage As Range
Dim MaCell As Range
Dim MesParaRange As Range, MonParaCell As Range

With Worksheets("DATA")
Set MaPlage = .Range("A2:A" & .Range("A500").End(xlUp).Row)
End With

With Worksheets("PARAMETRES")
Set MesParaRange = .Range("A2:A" & .Range("A500").End(xlUp).Row)
End With

For Each MaCell In MaPlage
For Each MonParaCell In MesParaRange
If InStr(MaCell, MonParaCell) Then
MaCell.Offset(0, MonParaCell.Offset(0, 1) - 1) = 1
End If
Next MonParaCell
Next MaCell

End Sub

Concrètement, je dois faire quels changements pour que ça s'adapte à ma feuille? J'ai changé les noms de Worksheets, le Sub porte le nom de mon bouton inséré. Au niveaud es Range (A2) ça correspond sur mon tableau, du coup je ne sais pas ce qui bloque.

Je vais continuer de fouiller mais quand on connait pas le fonctionnement c'est un peu compliqué.

Bonne journée !
 

Legolas

XLDnaute Occasionnel
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonjour,

Je pense que l'erreur vient du fait d'avoir changer le nom du "Sub".
Quand tu insères un bouton, le nom de celui-ci n'a aucun lien avec le nom de la macro.
Il faut affecter la macro au bouton : activer le mode création, cliquer droit sur le bouton, affecter une macro, choisir la macro (donc le nouveau nom), et quitter le mode création.

A+

EDIT : dans visual basic, il faut regarder sur la feuille DATA en double cliquant dessus.
Tu verras qu'il y a également du code...
 
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonjour Tsoin, TotoTiti, le Forum

Ah alors tu retiens la version VBA finalement ;-)

Pour que cette macro "TheDetector" fonctionne dans un autre classeur il y des conditions :

1) Que la Feuille "PARAMETRES" existe bien avec les Paramètres nécessaires préalablement renseignés :
Exemples :
Mots à Chercher
Colonne de Reception
Moulée
2
Moule
2
Moulage
2
Panne
3
XXXX
4
YYYY
5
TSOIN
6

Si ensuite il y a "TOTOTITI" dans une des cellules du suivi de Production, vu que "TOTOTITI" n'existe pas dans la feuille paramètre, il ne se passera rien, que neni, nada !

2) Il faut que ta Feuille de Suivi de Production se nomme "DATA" soit changer son nom, soit changer le Code :

With Worksheets("DATA")
Set MaPlage = .Range("A2:A" & .Range("A500").End(xlUp).Row)​
End With

Comme suit:
With Worksheets("Le Nom de la Feuille de Suivi")

Sinon rien d'autre à changer dans le code... Normalement il gère jusqu'à 500 lignes; sinon changer ici
Set MaPlage = .Range("A2:A" & .Range("A500").End(xlUp).Row)

3) le Bouton "ActiveX" (comme dans ma Démo) qui doit bien lancer la Macro soit comme ceci :
Private Sub CommandButton1_Click()
Me.Range("B2:F500").ClearContents
TheDetector
End Sub

Là c'est un code qui est dans le Module de la Feuille où se trouve le Bouton

Soit c'est une objet Shape ou Bouton "Formulaire" où l'on "affecte" une macro (Click droit sur l'objet, chosir "TheDetector" dans la liste)....


Normalement ce devrait fonctionner si tout est bien fait ...

Tu peux inserrer une ligne de code pour voir au moins si la macro se Lance, iol suffit de copier coller ceci dans une ligne vierge après les 4 "Dim" :

MsgBox "Hello Tsoin, je suis TheDetector"

Bon courage
@+Thierry

Edition Hello Legolias, pas vu ta réponse
 

Tsoin42

XLDnaute Nouveau
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Très bien, j'ai respecté ce que vous m'avez dit et j'ai inseré le MsgBox "Hello Tsoin, je suis TheDetector" qui fonctionne.

Ca me met tout de même : "Erreur d'execution 1004" et surligne la ligne suivante dans le VBA :
MaCell.Offset(0, MonParaCell.Offset(0, 1) - 1) = 1. :confused:
 

Si...

XLDnaute Barbatruc
Re : Si la case contient le mot "XXX" alors mettre un chiffre

salut
Ca me met tout de même : "Erreur d'execution 1004" et surligne la ligne suivante dans le VBA :
MaCell.Offset(0, MonParaCell.Offset(0, 1) - 1) = 1. :confused:


La macro ne prend pas en compte une erreur dans la colonne numéro (cellule vide ou non numérique).
Ou tu contrôles bien ou tu rajoutes un test (comme dans l'exemple ci-joint).
 

Pièces jointes

  • TesteSi.xlsm
    21.5 KB · Affichages: 89

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Hello Legolas, Tsoin, le Forum

Vite fait, l'erreur 1004 en général signifie que l'on "patauge" sur un Objet WorkSheet ou Range... Le Bouton est sur la Feuille Data comme dans ma Démo ?

Sinon c'est les Offset qui sortent des limites... Car le If ne filtre pas comme il faudrait...Tenter de faire l'expression "Instr" complête ...

Remplacer cette Ligne :
f InStr(MaCell, MonParaCell) Then

Par :
f InStr(MaCell, MonParaCell) <> 0 Then

@+Thierry

EDition, oups Si... pas raffraichit , salut à toi
 
Dernière édition:

Tsoin42

XLDnaute Nouveau
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Bonjour à tous!

Désolée de revenir si tard, j'ai eu d'autres missions alors j'ai mis de côté cette macro.

Je suis de retour, je regarde ce que je peux faire j'ai commencé à lire pas mal de tuto sur les VBA alors je me suis très légèrement améliorée ;D.
 

Tsoin42

XLDnaute Nouveau
Re : Si la case contient le mot "XXX" alors mettre un chiffre

Super ça fonctionne impec.

Vous allez me frapper je pense, mais en insérant un nouveau bouton le Sub() se placait au dessus du "Option Explicit
Option Compare Text" :eek: Bref, sur un exemple que je reviens de faire ça fonctionne à merveille !

Merci à vous tous pour votre aide et encore désolée de vous avoir fait chercher une erreur que je créais moi-même...!

Je pense revenir demander de l'aide prochainement vu que j'essaye de faire de beaux trucs, c'est assez complexe le VBA quand on a pas les bases.

A la prochaine et encore merci !;)
 

Statistiques des forums

Discussions
312 544
Messages
2 089 452
Membres
104 167
dernier inscrit
nourisebai