Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1735 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  SOS VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SOS VBA

n°2327587
gaultier78​330
Posté le 13-01-2019 à 00:53:15  profilanswer
 


Bonjour,
 
Je suis présentement entrain d’écrire un programme qui déclenche une alerte sous certaine conditions.
En effet, dans la colonne 14 ou ("N" ) il y a une condition "SI" qui est fonction de la date rentrée dans la colonne("I" )
Lorsque("N" ) et ("I" ) sont vérifiées je souhaiterais que la macro alerte() s'active
 
Le soucis c'est qu'avec le code suivant :
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim O_Cell As Object
Dim valeur As String
 
 
 
If Target.Column = 14 Then
 
 
        valeur = "*ROUGE*"                        'valeur à chercher
        Application.Goto Reference:="RDV"   ' "RDV" est le nom de la zone de recherche
        Set O_Cell = Selection.Find(valeur)   ' recherche de la valeur
        If Not O_Cell Is Nothing Then           'si l'objet O_Cell contient les coordonnées de la cellule
                call alerte
                O_Cell.Select ' sélection de la cellule
                 
        Else
         
        Exit Sub
        End If
        End If
End Sub  
 
La macro alerte ne s'active pas car la valeur de ("N" ) n'est pas vraiment modifiée comme le demande  "target.", puisqu'elle répond uniquement à une condition.
 
Je souhaiterais savoir comment adapter mon code à la valeur affichée dans les cellules de la colonne ("N" ), c'est à dire modifiées uniquement en fonction de la fonction "SI" à l'intérieur de celle-ci et non manuellement comme propose le target.column ou target.adress
 
 
Le soucis c'est que lorsque j'enlève le target.column de mon code, la macro fait une boucle et n'arrive plus à s’arrêter.
 
Merci de bien vouloir me donner un coup de main, cela fait des heures que j'essaye de m'en sortir sans succès

mood
Publicité
Posté le 13-01-2019 à 00:53:15  profilanswer
 

n°2327589
MaybeEijOr​Not
but someone at least
Posté le 13-01-2019 à 13:33:05  profilanswer
 

Bonjour,
 
J'ai bien du mal à comprendre ce que tu veux faire...
 
À tout hasard, est-ce que ceci pourrait aller :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   Dim O_Cell As Object
  3.   Dim valeur As String
  4.   Dim myRow as String
  5.  
  6.   If Target.Column = 14 Then
  7.      myRow = Target.Row
  8.      valeur = "*ROUGE*"                  'valeur à chercher
  9.      Application.Goto Reference:="RDV"'  "RDV" est le nom de la zone de recherche
  10.      Set O_Cell = Selection.Find(valeur) ' recherche de la valeur
  11.      If Not O_Cell Is Nothing And Target.value = Range("I" & myRow).value Then       'si l'objet O_Cell contient les coordonnées de la cellule et que la seconde condition est remplie (comparaison entre colonne "N" et "I" )
  12.         call alerte
  13.         O_Cell.Select                    ' sélection de la cellule
  14.      End If
  15.   End If
  16. End Sub


 
Je ne connais pas la seconde condition, donc à adapter. Mais alors franchement, je ne suis pas sûr d'avoir compris ce que tu voulais faire.


Message édité par MaybeEijOrNot le 13-01-2019 à 13:33:34

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2327625
gaultier78​330
Posté le 14-01-2019 à 13:09:59  profilanswer
 

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim O_Cell As Object
   Dim valeur As String
   Dim myRow As String
 
   If Target.Column = 14 Then
      myRow = Target.Row
      valeur = "ROUGE"                  'valeur à chercher
      Application.Goto Reference:="RDV" '  "RDV" est le nom de la zone de recherche
      Set O_Cell = Selection.Find(valeur) ' recherche de la valeur
      If Not O_Cell Is Nothing And Target.text = valeur Then       'si l'objet O_Cell contient les coordonnées de la cellule et que la seconde condition est remplie (comparaison entre colonne "N" et "I" )
         O_Cell.Select ' sélection de la cellule
         Call alerte
                             
      End If
   End If
End Sub
 
j'ai adapté ta solution à ma macro et elle est très bien, mais le problème est que la colonne 14 contient une formule "SI:" et lorsque le résultat est réalisé la modification de la cellule n'est pas prise en compte par la macro en question. En effet celle-ci ne fonctionne que lorsque je rentre moi même (manuellement) "ROUGE" dans la cellule! moi ce que je voudrais, ce que lorsque le résultat de la formule affiche la valeur "ROUGE" dans la cellule, la macro se déclenche aussitôt

n°2327627
MaybeEijOr​Not
but someone at least
Posté le 14-01-2019 à 14:09:51  profilanswer
 

Pourquoi utiliser "Target" alors ? Pourquoi ne pas directement utiliser la référence de la cellule ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2327628
gaultier78​330
Posté le 14-01-2019 à 14:26:00  profilanswer
 

Cette macro est écrite dans "sheet1" et doit se déclencher automatiquement à chaque modification de la colonne 14(N). je ne connait pas un autre moyen de déclencher un événement après la modification d'une cellule! je ne sais pas comment adapter ma macro à la référence de la cellule

n°2327630
patrice337​40
Avec la réponse, c'est facile.
Posté le 14-01-2019 à 14:50:35  profilanswer
 

Bonjour,
 
L'évènement Change ne se produit pas lorsque le résultat d'une formule change.
Il faut tester le changement des constantes antécédentes pour le calcul de la formule.


---------------
Cordialement, Patrice
n°2327631
gaultier78​330
Posté le 14-01-2019 à 14:55:29  profilanswer
 

Et comment je procède pour réaliser cela avec ma macro?

n°2327632
gaultier78​330
Posté le 14-01-2019 à 15:05:30  profilanswer
 

Patrice33740 merci infiniment la macro avec les références des cellules fonctionne très bien :-)

n°2327633
patrice337​40
Avec la réponse, c'est facile.
Posté le 14-01-2019 à 15:06:38  profilanswer
 

Ok


Message édité par patrice33740 le 14-01-2019 à 15:07:31

---------------
Cordialement, Patrice
n°2327634
MaybeEijOr​Not
but someone at least
Posté le 14-01-2019 à 15:51:21  profilanswer
 

gaultier78330 a écrit :

Cette macro est écrite dans "sheet1" et doit se déclencher automatiquement à chaque modification de la colonne 14(N). je ne connait pas un autre moyen de déclencher un événement après la modification d'une cellule! je ne sais pas comment adapter ma macro à la référence de la cellule


 
Pour que ce soit bien clair.
La macro se déclenche à chaque changement de cellule, Target sert à passer la dite cellule en référence. Tu peux très bien utiliser la macro sans utiliser Target.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
mood
Publicité
Posté le 14-01-2019 à 15:51:21  profilanswer
 

n°2327635
gaultier78​330
Posté le 14-01-2019 à 16:30:14  profilanswer
 

Private Sub Worksheet_Change(ByVal Target As Range)
   Dim O_Cell As Object
   Dim valeur As String
   Dim myRow As String
 
   If Target.Column = 14 Or Target.Column = 9 Then
   Call efface                                ' efface la cellules "ALERTE" si cellule 9 est vide
      myRow = Target.Row
      valeur = "ROUGE"                  'valeur à chercher
      Application.Goto Reference:="RDV" '  "RDV" est le nom de la zone de recherche
      Set O_Cell = Selection.Find(valeur) ' recherche de la valeur
      If Not O_Cell Is Nothing And Target.Value <> "" Then      'si l'objet O_Cell contient les coordonnées de la cellule et que la seconde condition est remplie (comparaison entre colonne "N" et "I" )
         Cells(myRow, 14).Find(valeur).Select    ' sélection de la cellule
         Call alerte                                           ' déclenche "ALERTE" si valeur vérifié
              Call alerte_info                               ' déclenche info_bulle en fonction du type d'alerte                      
                     
     
      End If
   End If
     
         
End Sub
 
 
voici la macro finale qui fonctionne très bien  
 
 
merci pour tout les amis


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  SOS VBA

 

Sujets relatifs
VBA organisation de tableauVBA : Autoriser modifications à l'ouverture d'un fichier
[EXCEL / VBA] Connexion ADO et recordset "limité"Arret fonction VBA
VBA - average sous conditions[VBA] Récupérer l'arborescence complète d'un dossier serveur
VBA - Prendre en compte les retours de formuleAide VBA userforme
[VBA] Erreur 4605 lors d'un Publipostage.SOS VBA Besoin d'aide pour un programme
Plus de sujets relatifs à : SOS VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR