Probleme de Private Sub Worksheet_Change

Bonsoir

dans une de mes feuilles j'ai besoin de 2 Private Sub Worksheet_Change(ByVal Target As Range) qui sont différentes

mais lors de la compilation, ça bug.

comment faire ?

merci

Zbig

Salut le forum

Une macro évenementielle doit être unique pour chaque feuille d'un classeur Excel.

Ta solution est de combiner les deux codes dans une seule macro.

Si tu nous présente tes deux codes, on pourra te les combiner.

Mytå

Bonjour

merci pour votre aide.

voici la private qui permet de marquer des minutes grâce en entrant en numériqeur

ex : je tape 123 et j'ai 1:23

Private Sub Worksheet_Change(ByVal Target As Range)

Dim HeurNum As String

Dim HeurHeur As String

Dim LongSaisie As Integer

If Not Intersect(Target, Range("L:S")) Is Nothing Then

'Si on saisit une formule, on sort

If Target.HasFormula Then Exit Sub

'Si on saisit du texte, on sort

If IsNumeric(Target.Value) = False Then Exit Sub

On Error Resume Next

Application.EnableEvents = False

'Initialisation des variables

HeurNum = Target.Value

LongSaisie = Len(HeurNum)

'Test de la longueur de la chaîne saisie

If LongSaisie = 1 Then

HeurNum = "00000" & HeurNum

ElseIf LongSaisie = 2 Then

HeurNum = "0000" & HeurNum

ElseIf LongSaisie = 3 Then

HeurNum = "000" & HeurNum

ElseIf LongSaisie = 4 Then

HeurNum = "00" & HeurNum

ElseIf LongSaisie = 5 Then

HeurNum = "0" & HeurNum

ElseIf LongSaisie = 6 Then

HeurNum = HeurNum

End If

'Initialisation de la variable retournée

HeurHeur = Left(HeurNum, 2) & ":" & Mid(HeurNum, 3, 2) & ":" & Right(HeurNum, 2)

'Modification de la valeur saisie

Target = HeurHeur

Application.EnableEvents = True

On Error GoTo 0

Else

End If

End Sub

A ceci je voudrais ajouter cette 2e private

permettant d'activer une formule (ou plusieurs) à chaque fois qu'une donnée est entrée dans une cellule sur fond coloré

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Interior.ColorIndex = 35 Then

l = Target.Row

Range("F" & l).Value = IIf(Cells(l, 1) = "" Or Cells(l, 2) = "", "", WorksheetFunction.Sum(Cells(l, 3), Cells(l, 4), Cells(l, 5)))

End If

End Sub

Si je souhaite ajouter d'autres formules, ou modifier

Range("F" & l).Value = IIf(Cells(l, 1) = "" Or Cells(l, 2) = "", "", WorksheetFunction.Sum(Cells(l, 3), Cells(l, 4), Cells(l, 5)))

où devrais je les placer?

merci

Zb

Bonjour

Places le test de la couleur en 1er

La macro testera si une couleur présente dans le cas contraire testera la zone "L:S"

Private Sub Worksheet_Change(ByVal Target As Range)
Dim HeurNum As String
Dim HeurHeur As String
Dim LongSaisie As Integer
Dim L As Long

  If Target.Interior.ColorIndex = 35 Then
    L = Target.Row
    Range("F" & L).Value = IIf(Cells(L, 1) = "" Or Cells(L, 2) = "", "", WorksheetFunction.Sum(Cells(L, 3), Cells(L, 4), Cells(L, 5)))
  ElseIf Not Intersect(Target, Range("L:S")) Is Nothing Then
    'Si on saisit une formule, on sort
    If Target.HasFormula Then Exit Sub

    'Si on saisit du texte, on sort
    If IsNumeric(Target.Value) = False Then Exit Sub

    On Error Resume Next
    Application.EnableEvents = False

    'Initialisation des variables
    HeurNum = Target.Value
    LongSaisie = Len(HeurNum)

    'Test de la longueur de la chaîne saisie
    If LongSaisie = 1 Then
      HeurNum = "00000" & HeurNum
    ElseIf LongSaisie = 2 Then
      HeurNum = "0000" & HeurNum
    ElseIf LongSaisie = 3 Then
      HeurNum = "000" & HeurNum
    ElseIf LongSaisie = 4 Then
      HeurNum = "00" & HeurNum
    ElseIf LongSaisie = 5 Then
      HeurNum = "0" & HeurNum
    ElseIf LongSaisie = 6 Then
      HeurNum = HeurNum
    End If
    'Initialisation de la variable retournée
    HeurHeur = Left(HeurNum, 2) & ":" & Mid(HeurNum, 3, 2) & ":" & Right(HeurNum, 2)

    'Modification de la valeur saisie
    Target = HeurHeur
    Application.EnableEvents = True
    On Error GoTo 0
  Else
  End If
End Sub

Bonjour baizai64

En faisant cela

la 1ère fonctionne mais plus la 2e ...

merci

Zbig

Bonjour

Cela fonctionne mais c'est soit l'une soit l'autre

Si dans tes colonnes L à S il y à des cellules couleur 35, ce n'est que la 1ère partie de la macro qui sera exécutée

Tu n'auras pas ton formatage d'heure

A toi de voir ce que tu veux

Il faut fournir un fichier avec un ou plusieurs exemples de ce que tu souhaites

Bonjour

le format heure est seulement utile sur les colonnes PQRS

j'ai crée un bouton macro, pour garder le format heure en private, ça fonctionne mais c'est moins bien, car pas automatique.

et en plus les formules s'affichent dans les cellules alors que je souhaiterais voir que le résultat de la formule (valeur)

merci

Zbig

Bonjour

zbig a écrit :

le format heure est seulement utile sur les colonnes PQRS

Dans ta macro c'est noté L:S !!!!

zbig a écrit :

et en plus les formules s'affichent dans les cellules alors que je souhaiterais voir que le résultat de la formule (valeur)

Joins un fichier représentatif

Bonjour

ci joint le fichier:

j'ai mis un bouton macro pour que les formules fonctionnent

mais cela ne me convient pas car je voudrais que les formules n'apparaissent pas dans les cellules ou du moins lorsque la valeur trouvée est pas numerique.

merci

Zbig

12proced12.zip (40.75 Ko)

Bonjour

Je ne comprends pas tout ce que tu veux

Moi je t'ai modifié la macroPrivate Sub Worksheet_Change(ByVal Target As Range)

Si tu modifies soit la colonne K ou la M mise à jour des formules en N T W et Y

Si tu modifies une colonne de P à R : formatage des tes heures, car dans la S il y a une formule

A vérifier et à revenir si je suis à côté

Bonsoir

1- "Si tu modifies soit la colonne K ou la M mise à jour des formules en N T W et Y"

--> impeccable

mais Si j'efface la valeur (supp) en colonne M, j'ai #n/a en colonne N au lieu de vide.

2- "Si tu modifies une colonne de P à R : formatage des tes heures, car dans la S il y a une formule"

peut il avoir une mise a jour automatique en T W et Y comme au dessu?

merci

Zbig

Bonsoir

A vérifier

J'ai vu trop tard ta remarque

mais Si j'efface la valeur (supp) en colonne M, j'ai #n/a en colonne N au lieu de vide.

Il faut modifier la formule en testant si le résultat donne #N/A

exemple

=SI(ESTNA(formule);"";formule)

Bonsoir

zbig a écrit :

mais Si j'efface la valeur (supp) en colonne M, j'ai #n/a en colonne N au lieu de vide.

Modifies la partie correspondante de la macro par ce code

    With Range("N" & lg)
      .Formula = "=IF(OR(RC[-11]="""",RC[-3]="""",RC[-6]=""""),"""",IF(ISNA(VLOOKUP(RC[-1],NIV3_GROUPE,6,false)),"""",VLOOKUP(RC[-1],NIV3_GROUPE,6,false)))"
      .Value = Range("N" & lg).Value
    End With

Bonsoir

1- quand je copie dans sub maj ()

With Range("N" & lg)

.Formula = "=IF(OR(RC[-11]="""",RC[-3]="""",RC[-6]=""""),"""",IF(ISNA(VLOOKUP(RC[-1],NIV3_GROUPE,6,false)),"""",VLOOKUP(RC[-1],NIV3_GROUPE,6,false)))"

.Value = Range("N" & lg).Value

End With

j'ai une erreur 400 qui apparait.

2-VLOOKUP(RC[-1],gestion,2))))"

il faut remplacer par VLOOKUP(RC[-1],gestion,3))))"

3-REMPLACER

With Range("W" & lg)

.Formula = "=IF(OR(RC[-3]="""",RC[-3]=0),"""",IF(RC3="""","""",IF(OR(RC12=""ab"",RC13=""ab"",RC14=""ab"")

PAR

With Range("W" & A)

.Formula = "=IF(OR(RC[-3]="""",RC[-3]=0),"""",IF(RC3="""","""",IF(OR(RC16=""ab"",RC17=""ab"",RC18=""ab"")

4-REMPLACER

.Formula = "=IF(or(RC[-23]="""",rc[-17]=""""),"""",IF(NOT(ISNUMBER(RC[-11])),0,RC[-11])+IF(NOT(ISNUMBER(RC[-5])),0,RC[-5])+IF(NOT(ISNUMBER(RC[-2])),0,RC[-2]))"

.Value = .Value

PAR

"=IF(or(RC[-22]="""",rc[-17]=""""),"""",IF(NOT(ISNUMBER(RC[-11])),0,RC[-11])+IF(NOT(ISNUMBER(RC[-5])),0,RC[-5])+IF(NOT(ISNUMBER(RC[-2])),0,RC[-2]))"

.Value = .Value

quand on utilise le bouton macto, l'erreur 400 arrive

Zbig

Bonsoir

Utilises les balises Code car ton code est incomplet

Version avec les formules dans MAJ

Ta boucle utilisait A comme variable et ensuite la formule utilisait Lg comme variable

Ton fichier corrigé (j'espère)

Bonjour

comme dit M Tombola : "C'est bon ça"

il y a un seul bug que je ne comprenais pas en cellule T8

cela était dû à une erreur de colonne dans une fonction recherchev (colonne2 au lieu de 3)

corrigé ici:

With Range("T" & Lg)

.Formula = "=IF(OR(RC[-12]="""",RC[-1]=""""),"""",IF(RC[-12]=""G"",VLOOKUP(RC[-1],niv3_PERFG,2),IF(RC[-12]=""F"",VLOOKUP(RC[-1],niv3_PERFF,3),"""")))"

MErci

Est ce possible de voir également les mises à jour cellules N T W Y quand on change le sexe en colonne H ?

merci

Zbig

Bonjour

Utilises les balises Code quand tu inscrits du code

A modifier dans la macro

If Not Intersect(Range("H:H,K:K,M:M"), Target) Is Nothing And Target.Interior.ColorIndex = 35 Then

Plus mettre en couleur cette colonne de la même couleur que les colonnes K et M

Bonsoir

merci ça fonctionne.

je vais pouvoir bien avancer et essayer d'utiliser les macros dans d autres feuilles.

Zbig

Bonsoir Banzai64, le forum

grâce à vous j'ai avancé dans ce fichier. mais je n'arrive pas à ce que la formule réagisse de la sorte dans la feuille cap-bep

SI JE METS "NP" EN colonne P/Q/R , il doit y avoir vide en colonne T-->ca marche avec le bouton uniquement

SI JE METS "A" EN K, je dois avoir 0 en Y

LEs 2 autres feuilles avancent aussi petit à petit

merci

Zbig

Bonsoir

A vérifier

Rechercher des sujets similaires à "probleme private sub worksheet change"