XL 2013 Macro événementielle sur valeur de ceulle

Alban.aktisea

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous pour tenter d'améliorer une macro existante sur mes fichiers Excel.

Objectif : Si dans ma colonne numéro 18 j'inscris une des valeurs "Refus", "Refus utilité" etc. tout ce que je peux mettre dans case la macro se déclenche.

Est-il possible qu'Excel aille chercher "Refus" dans une cellule du classeur?

Je créé de nombreux fichiers et ça m'ennuie à chaque fois de venir modifier cette macro, cela est source d'erreurs.


Merci pour votre aide, j'ai fait plusieurs tentatives infructueuses... :(


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 18 Then 'le numéro de la colonne que nous observons

Application.EnableEvents = False 'Permet d'accelerer le fichier

Select Case Target


Case "Refus", "Refus utilité", "Refus entretien", "Refus concurrent", "Refus autre", "Refus prix":

Target.Offset(0, 10) = Date 'inscrit la date d'appel
Code:
 

M12

XLDnaute Accro
Re : Macro événementielle sur valeur de ceulle

Bonjour

A tester

Si col 18 contient "refus" col 10 donne la date du jour

Code:
Option Explicit
Option Compare Text
Dim i As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 18 Then
        i = Target.Row
         If Target.Value Like "*" & "refus" & "*" Then
            Range("J" & i).Value = Date
         End If
    End If
End Sub
 
Dernière modification par un modérateur:

Alban.aktisea

XLDnaute Nouveau
Re : Macro événementielle sur valeur de ceulle

Bonjour M12,

Merci pour ta réponse,

J'ai fait quelques test :

Code:
If Target.Value Like Sheets("listing").Range("O3").Value Then

ça fonctionne ! :eek: par contre je n'arrive pas à mettre plusieurs conditions, si j'ajoute " & " ça ne fonctionne plus.

Une idée?

Merci


Code:
Option Explicit
Option Compare Text
Dim i As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 18 Then
        i = Target.Row
         If Target.Value Like "*" & "refus" & "*" Then
            Range("J" & i).Value = Date
         End If
    End If
End Sub
 

M12

XLDnaute Accro
Re : Macro événementielle sur valeur de ceulle

Re,
Pourquoi rajouter des &

Il prends en charge avec le mot "refus" en maj - Min - avec des caractères devant ou /et derrière ?

Ou alors, quand tu poses une question, donne tous les difficultés que tu désires SINON, perte de temps

De plus "LIKE" n'est pas fait pour aller chercher ce que tu demandes, il recherche des chaines de caractère
 
Dernière modification par un modérateur:

Alban.aktisea

XLDnaute Nouveau
Re : Macro événementielle sur valeur de ceulle

Re,

J'ai pris un exemple avec les refus, les données peuvent être " refus", "poire", "pomme", "voiture".

Plutôt que d'écrire ces valeurs dans le "dur" de la macro, j'aimerai qu'Excel aille chercher les données dans des cellules de mon classeur.



L'idée avec le & était de faire :

If Target.Value Like Sheets("listing").Range("O3").Value & Sheets("listing").Range("O4").Value Then


Désole de ne pas avoir été clair dès le début! L'idée est vraiment de ne plus écrire case "refus" mais case Sheets("listing").Range("O4").Value. Mais cela écris comme ça ne fonctionne pas.
 

Alban.aktisea

XLDnaute Nouveau
Re : Macro événementielle sur valeur de ceulle

Re,

Le fichier en pièce jointe, les différents statuts se trouvent dans la feuille "Infos". -- C3:C22

La macro initiale sur la feuille "listing".
 

Pièces jointes

  • 1. Exemple.xlsm
    38.5 KB · Affichages: 44
  • 1. Exemple.xlsm
    38.5 KB · Affichages: 37

M12

XLDnaute Accro
Re : Macro événementielle sur valeur de ceulle

Re,

Pour TEST

Regarde bien dans le code que les expressions soit avec la même orthorgraphe que dans INFOS, surtout pour les accents

Il y a des corrections à faire, mais le principe est là.
Je te laisse corriger
 

Pièces jointes

  • 1. Exemple.xlsm
    36.8 KB · Affichages: 42
  • 1. Exemple.xlsm
    36.8 KB · Affichages: 39

Alban.aktisea

XLDnaute Nouveau
Re : Macro événementielle sur valeur de ceulle

Re,

Super cela fonctionne, un grand merci pour ton aide et ta patience.

J'ai modifié le code comme cela :

Code:
If Target.Value Like Sheets("Infos").Range("G3").Value Or Target.Value Like Sheets("Infos").Range("G4").Value Or Target.Value Like Sheets("Infos").Range("G5").Value Or Target.Value Like Sheets("Infos").Range("G6").Value Or Target.Value Like Sheets("Infos").Range("G7").Value Then
      ActiveCell.Offset(0, 1).Value = Date & " " & ActiveCell.Offset(0, 10).Value & "-" & ActiveCell.Offset(0, 0).Value & " : " & Chr(10) & ActiveCell.Offset(0, 1).Value
      Target.Offset(0, 9) = Range("A1")
      Target.Offset(0, 10) = Date 'inscrit la date d'appel
      Target.Offset(0, 11) = Time 'inscrit l'heure d'appel
      Target.Offset(0, 2) = "Pas de rappel" 'inscrit la date de rappel"
      Cells(Target.Row, 1).Resize(, 30).Interior.ColorIndex = 43
End If

Et ainsi de suite pour mes différentes catégories.

Merci encore et bonne fin de journée
 

Regueiro

XLDnaute Impliqué
Re : Macro événementielle sur valeur de ceulle

Bonsoir Le Forum
Ton fichier en retour
Sur la feuille "Infos" tu as un tableau "Tableau1"
j'ai rajouté une colonne cas
Tu traites dans cette colonne les cas 1, 2, 3 , etc
Lors de chaque changement en colonne 18, il cherche le cas selon ta cible target
j'inscrit en colonne AG le N° du cas

Ainsi tu peux compléter ton tableau sans te soucier du code
Extrait du code :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Target.Column = 18 Then  'le numéro de la colonne que nous observons
  
Application.EnableEvents = False 'Permet d'accelerer le fichier
With Sheets("Infos").Range("Tableau1")
    Set c = .Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Target.Offset(0, 15) = c.Offset(0, 1)
        Else
            Target.Offset(0, 15) = "?"
        End If
    End With
Select Case Target.Offset(0, 15)


';NRP;Refus prix;Refus entretien;Refus concurrent;Refus autre;Litige clients;Faux numero;Numero absent;Hors cible;Injoignable;RAPPEL

'--------------------------------------------------------------------
'   LES ECHECS        LES ECHECS        LES ECHECS
'--------------------------------------------------------------------
Case 1
'Case "Refus", "Refus utilité", "Refus entretien", "Refus concurrent", "Refus autre", "Refus prix":
      'If Target.Value Like "*" & Range("A2").Value & "*" Then
     ' Case is Target.Value Like "*" & Sheets("Infos").Range("F3:F5").Value & "*" Then
      ActiveCell.Offset(0, 1).Value = Date & " " & ActiveCell.Offset(0, 10).Value & "-" & ActiveCell.Offset(0, 0).Value & " : " & Chr(10) & ActiveCell.Offset(0, 1).Value

@+
 

Pièces jointes

  • 1. Exemple.xlsm
    42.1 KB · Affichages: 41
  • 1. Exemple.xlsm
    42.1 KB · Affichages: 42

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87