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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Detecter changement contenu cellule

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Detecter changement contenu cellule

n°1885473
l0r3n1
Posté le 17-05-2009 à 21:41:06  profilanswer
 

Bonjour,  
 
 
Je souhaiterai detecter que le contenu d'une cellule à changé sous excel, pour cela, j'utilise ceci :
 

Private Sub Worksheet_Change(ByVal Target As Range)
col = Target.Column: lig = Target.Row
If col > 7 And col < 23 And lig > 6 And lig < 23 Then GoTo CelOk
If col > 7 And col < 23 And lig > 33 And lig < 50 Then GoTo CelOk
Exit Sub
CelOk:
If Cells(lig, col).Value = "" Or Cells(lig, col).Value = "/ /" Then Exit Sub
nom = Cells(lig, col).Value
a = 0
Do
a = a + 1:
Loop While LCase(Sheets("Liste" ).Cells(a, 3)) <> LCase(Cells(lig, col).Value) And a <> 500
If a = 500 Then Exit Sub
Cells(lig, col) = Sheets("Liste" ).Cells(a, 3)
Cells(lig, col - 5) = Sheets("Liste" ).Cells(a, 2)
Cells(lig, col + 16) = Sheets("Liste" ).Cells(a, 4)
End Sub


 
Detection d'une plage de cellule précise, et vérification de la cellule par rapport à une liste d'entrée, afin de completer en auto la cellule gauche et droite de celle à controler.
 
 
Mon soucis est que cette macro figure directement dans le classeur excel, et je souhaiterai la ranger dans le classeur de macro complémentaire.
 
Comment faire, merci.

mood
Publicité
Posté le 17-05-2009 à 21:41:06  profilanswer
 

n°1885714
Paul Hood
Posté le 18-05-2009 à 15:35:37  profilanswer
 
n°1885847
l0r3n1
Posté le 18-05-2009 à 21:23:50  profilanswer
 


Sauf que la macro s'executant dans le classeur des macros comp, la fonction Worksheet_Change ne fonctionne plus.
 
Puisqu'il faut que je lui dise d'aller voir dans telle feuille de tel classeur, mais comment ?

n°1886010
Paul Hood
Posté le 19-05-2009 à 11:41:22  profilanswer
 

Tu veux lui dire comment ? par saisie ou en automatique ?

n°1886039
Turkleton
I don't quite understand you
Posté le 19-05-2009 à 12:16:35  profilanswer
 

Ca va pas t'aider pour ton problème, mais pour tes futurs développements :
 

l0r3n1 a écrit :


 
Private Sub Worksheet_Change(ByVal Target As Range)
col = Target.Column: lig = Target.Row
If (col > 7 And col < 23) And ((lig > 6 And lig < 23  lig) Or (lig > 33 And lig < 50)) Then
 
  If Cells(lig, col).Value <> "" And Cells(lig, col).Value <> "/ /" Then
    nom = Cells(lig, col).Value
    a = 0
    Do
      a = a + 1:
    Loop While LCase(Sheets("Liste" ).Cells(a, 3)) <> LCase(Cells(lig, col).Value) And a <> 500
    If a <> 500 Then
      Cells(lig, col) = Sheets("Liste" ).Cells(a, 3)
      Cells(lig, col - 5) = Sheets("Liste" ).Cells(a, 2)
      Cells(lig, col + 16) = Sheets("Liste" ).Cells(a, 4)
    End If
  End If
End If
 
End Sub
 


 
Ce n'est qu'un début d'optimisation du code mais c'est quand même plus propre. Essaie d'éviter au maximum le recours aux "goto" et aux "exit sub", surtout quand tu as facilement moyen de faire autrement, ton code n'en sera que plus lisible.
 
C'est un conseil de vieux con :D, mais c'est néanmoins ce que n'importe quel bon développeur te dira  ;)


Message édité par Turkleton le 19-05-2009 à 12:18:11
n°1886259
l0r3n1
Posté le 19-05-2009 à 20:02:49  profilanswer
 

Paul Hood a écrit :

Tu veux lui dire comment ? par saisie ou en automatique ?


En automatique, puisque son fonctionnement doit être transparent pour l'utilisateur.

n°1886945
l0r3n1
Posté le 22-05-2009 à 07:34:21  profilanswer
 

Personne ?

n°1887801
l0r3n1
Posté le 25-05-2009 à 21:43:41  profilanswer
 

up !

n°1892136
l0r3n1
Posté le 07-06-2009 à 12:09:45  profilanswer
 

Personne ne sait, ou ce n'est pas faisable ?


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

  Detecter changement contenu cellule

 

Sujets relatifs
Récupérer la première ligne d'une celluleProblème fusion cellule tableau html
Adapter la hauteur de la iframe a son contenuProblème changement fenêtre
Problème de hauteur de cellule html;;Connaître le contenu d'un fichier compressé
Copier le contenu d'un fichier texteRécuperer le contenu d'un noeud simplexmlelement dans l'ordre ?
Selection plage de celluleContenu d'un TextArea dans paramètres fonctions
Plus de sujets relatifs à : Detecter changement contenu cellule


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