Bonjour,
J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par
Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois
bizarrement. Normalement elle intervient seulement si l'on change des
données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle
revient 12 colonne en arrière et indique la référence qui est en E2. Donc je
vais rajouter cette ligne au début :
If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou
colonne +13 on sort
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une
cellule
(nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub
'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value)
Then
Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la
colonne 13
End If
If Target.Column = 6 And Target.Row > 3 Then
Ligne = Application.Match(Target.Value, Range("TEST1"), 0)
If Not IsNumeric(Ligne) Then
On Error Resume Next
MsgBox Target.Value & " : cette référence n'est pas dans la liste"
Exit Sub
End If
Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"),
Ligne, 1)
Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"),
Ligne, 1)
Else
On Error Resume Next
If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then
Target.Offset(0, -12).Value = [e2]
If [e2] = 35 Then
MsgBox "historisez avant de continuer, svp"
End If
Else
Exit Sub
End If
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Quetzalcoatl
Bonjour,
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
Bonjour,
Voir ta ligne de code :
Target.Offset(0, -12).Value = [e2]
"daniel" <novice@neuf.fr> a écrit dans le message de news:
uh7g9$udGHA.1656@TK2MSFTNGP02.phx.gbl...
Bonjour,
J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par
Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois
bizarrement. Normalement elle intervient seulement si l'on change des
données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle
revient 12 colonne en arrière et indique la référence qui est en E2. Donc
je vais rajouter cette ligne au début :
If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou
colonne +13 on sort
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une
cellule
(nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub
'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value)
Then
Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la
colonne 13
End If
If Target.Column = 6 And Target.Row > 3 Then
Ligne = Application.Match(Target.Value, Range("TEST1"), 0)
If Not IsNumeric(Ligne) Then
On Error Resume Next
MsgBox Target.Value & " : cette référence n'est pas dans la liste"
Exit Sub
End If
Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"),
Ligne, 1)
Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"),
Ligne, 1)
Else
On Error Resume Next
If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then
Target.Offset(0, -12).Value = [e2]
If [e2] = 35 Then
MsgBox "historisez avant de continuer, svp"
End If
Else
Exit Sub
End If
End If
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
daniel
Bonjour, Je n'ai pas compris la réponse,
Target.Offset(0, -12).Value = [e2] se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M. Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Bon week-end.
Daniel (novice)
"Quetzalcoatl" a écrit dans le message de news: 4466e4a2$0$18340$
Bonjour,
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
Bonjour,
Je n'ai pas compris la réponse,
Target.Offset(0, -12).Value = [e2]
se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M.
Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Bon week-end.
Daniel (novice)
"Quetzalcoatl" <quetzalHIHIHIcoatl@free.fr.invalid> a écrit dans le message
de news: 4466e4a2$0$18340$8fcfb975@news.wanadoo.fr...
Bonjour,
Voir ta ligne de code :
Target.Offset(0, -12).Value = [e2]
"daniel" <novice@neuf.fr> a écrit dans le message de news:
uh7g9$udGHA.1656@TK2MSFTNGP02.phx.gbl...
Bonjour,
J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par
Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois
bizarrement. Normalement elle intervient seulement si l'on change des
données dans les colonnes 6 ou 13, mais parfois, après la colonne 13,
elle revient 12 colonne en arrière et indique la référence qui est en E2.
Donc je vais rajouter cette ligne au début :
If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou
colonne +13 on sort
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une
cellule
(nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub
'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value)
Then
Target.Offset(0, -12).Value = Empty 'si on efface une cellule de
la colonne 13
End If
If Target.Column = 6 And Target.Row > 3 Then
Ligne = Application.Match(Target.Value, Range("TEST1"), 0)
If Not IsNumeric(Ligne) Then
On Error Resume Next
MsgBox Target.Value & " : cette référence n'est pas dans la liste"
Exit Sub
End If
Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"),
Ligne, 1)
Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"),
Ligne, 1)
Else
On Error Resume Next
If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0
Then
Target.Offset(0, -12).Value = [e2]
If [e2] = 35 Then
MsgBox "historisez avant de continuer, svp"
End If
Else
Exit Sub
End If
End If
Target.Offset(0, -12).Value = [e2] se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M. Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Bon week-end.
Daniel (novice)
"Quetzalcoatl" a écrit dans le message de news: 4466e4a2$0$18340$
Bonjour,
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
Daniel
Bonsoir. Essaie le code suivant; je pense que le second "on error" n'est pas indispensable :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If End Sub
Cordialement. Daniel "daniel" a écrit dans le message de news:
Bonjour, Je n'ai pas compris la réponse,
Target.Offset(0, -12).Value = [e2] se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M. Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Bon week-end.
Daniel (novice)
"Quetzalcoatl" a écrit dans le message de news: 4466e4a2$0$18340$
Bonjour,
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
Bonsoir.
Essaie le code suivant; je pense que le second "on error" n'est pas
indispensable :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une
cellule (nouvelle ligne)
If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon
+13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then
Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la
colonne 13
End If
If Target.Column = 6 And Target.Row > 3 Then
Ligne = Application.Match(Target.Value, Range("TEST1"), 0)
If Not IsNumeric(Ligne) Then
On Error Resume Next
MsgBox Target.Value & " : cette référence n'est pas dans la
liste"
Exit Sub
End If
Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"),
Ligne, 1)
Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"),
Ligne, 1)
Else
If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then
Target.Offset(0, -12).Value = [e2]
If [e2] = 35 Then
MsgBox "historisez avant de continuer, svp"
End If
Else
Exit Sub
End If
End If
End Sub
Cordialement.
Daniel
"daniel" <novice@neuf.fr> a écrit dans le message de news:
erDrGf0dGHA.5116@TK2MSFTNGP04.phx.gbl...
Bonjour,
Je n'ai pas compris la réponse,
Target.Offset(0, -12).Value = [e2]
se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M.
Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Bon week-end.
Daniel (novice)
"Quetzalcoatl" <quetzalHIHIHIcoatl@free.fr.invalid> a écrit dans le
message de news: 4466e4a2$0$18340$8fcfb975@news.wanadoo.fr...
Bonjour,
Voir ta ligne de code :
Target.Offset(0, -12).Value = [e2]
"daniel" <novice@neuf.fr> a écrit dans le message de news:
uh7g9$udGHA.1656@TK2MSFTNGP02.phx.gbl...
Bonjour,
J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par
Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois
bizarrement. Normalement elle intervient seulement si l'on change des
données dans les colonnes 6 ou 13, mais parfois, après la colonne 13,
elle revient 12 colonne en arrière et indique la référence qui est en
E2. Donc je vais rajouter cette ligne au début :
If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou
colonne +13 on sort
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la
nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus.
Et comment imposer autrement les colonnes F ou M ????
Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer
qu'une cellule
(nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit
Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And
IsEmpty(Target.Value) Then
Target.Offset(0, -12).Value = Empty 'si on efface une cellule de
la colonne 13
End If
If Target.Column = 6 And Target.Row > 3 Then
Ligne = Application.Match(Target.Value, Range("TEST1"), 0)
If Not IsNumeric(Ligne) Then
On Error Resume Next
MsgBox Target.Value & " : cette référence n'est pas dans la
liste"
Exit Sub
End If
Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"),
Ligne, 1)
Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"),
Ligne, 1)
Else
On Error Resume Next
If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0
Then
Target.Offset(0, -12).Value = [e2]
If [e2] = 35 Then
MsgBox "historisez avant de continuer, svp"
End If
Else
Exit Sub
End If
End If
Bonsoir. Essaie le code suivant; je pense que le second "on error" n'est pas indispensable :
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If End Sub
Cordialement. Daniel "daniel" a écrit dans le message de news:
Bonjour, Je n'ai pas compris la réponse,
Target.Offset(0, -12).Value = [e2] se trouve déjà dans la macro, et c'est donc pour compléter la colonne A si
l'on indique un chiffre en colonne M. Mes questions sont
Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Bon week-end.
Daniel (novice)
"Quetzalcoatl" a écrit dans le message de news: 4466e4a2$0$18340$
Bonjour,
Voir ta ligne de code : Target.Offset(0, -12).Value = [e2]
"daniel" a écrit dans le message de news: uh7g9$
Bonjour, J'utilise une macro qui m'a été donnée sur ce forum (essentiellement par Daniel), et que j'ai un peu changée. Mais celle-ci réagit parfois bizarrement. Normalement elle intervient seulement si l'on change des données dans les colonnes 6 ou 13, mais parfois, après la colonne 13, elle revient 12 colonne en arrière et indique la référence qui est en E2. Donc je vais rajouter cette ligne au début : If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colonne +13 on sort Mais pourquoi réagit-elle parfois comme ça ???? Pourquoi pour 6 ou 7(la nouvelle ligne) IF, 5 end if suffisent ???, et vba n'en veut pas plus. Et comment imposer autrement les colonnes F ou M ???? Par avance merci de vos réponses (constructives).
Private Sub Worksheet_Change(ByVal Target As Range) Dim Ligne
If Target.Count > 1 Then Exit Sub 'on ne peut saisir ou effacer qu'une cellule (nouvelle ligne) If Target.Row < 3 Or Target.Column > 13 Then Exit Sub 'ligne -3 ou colon +13 on sort
If Target.Column = 13 And Target.Row > 3 And IsEmpty(Target.Value) Then Target.Offset(0, -12).Value = Empty 'si on efface une cellule de la colonne 13 End If
If Target.Column = 6 And Target.Row > 3 Then Ligne = Application.Match(Target.Value, Range("TEST1"), 0) If Not IsNumeric(Ligne) Then On Error Resume Next MsgBox Target.Value & " : cette référence n'est pas dans la liste" Exit Sub End If Target.Offset(0, -1).Value = WorksheetFunction.Index(Range("TEST2"), Ligne, 1) Target.Offset(0, -2).Value = WorksheetFunction.Index(Range("TEST3"), Ligne, 1) Else On Error Resume Next If Target.Column = 13 And Target.Row > 3 And Target.Value <> 0 Then Target.Offset(0, -12).Value = [e2] If [e2] = 35 Then MsgBox "historisez avant de continuer, svp" End If Else Exit Sub End If End If
End Sub
daniel
Bonjour Daniel, Merci pour la réponse, je vais mettre en application ce que tu proposes, et je te donnerai le résultat, qui je pense sera positif. Encore merci et à la prochaine. Daniel(novice)
Bonjour Daniel,
Merci pour la réponse, je vais mettre en application ce que tu proposes, et
je te donnerai le résultat, qui je pense sera positif.
Encore merci et à la prochaine.
Daniel(novice)
Bonjour Daniel, Merci pour la réponse, je vais mettre en application ce que tu proposes, et je te donnerai le résultat, qui je pense sera positif. Encore merci et à la prochaine. Daniel(novice)