...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que la
valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que la
valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que la
valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End Sub
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End Sub
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
Bonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie en
colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lStephBonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lSteph
Bonjour,
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End Sub
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lStephBonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lStephBonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lSteph
Bonjour,
...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End Sub
Bonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@
....remarque importante
j'ai aussi ajouté ceci:
If Target.Row < niveau.Row Then Exit Sub
ainsi lorsque tu rectifie une ligne d'au dessus cela n'ira pas copier la
dernière.
ATTENTION!!!
Reste que dans ce système il y a un risque d'erreur important!
Car c'est bien beau d'aller écrire la dernière ligne si celles qui sont
rectifiées au-dessus dans saisie ne le sont jamais dans recettes
A ta place je mettrais plutôt un filtre élaboré sur critère recette dans
recettes et un autre je suppose dans dépenses sur critère dépense
Il me sortirait ainsi uniquement les enregistrements dont j'ai besoin
dans leur feuille respective.
@+
--
lStephBonjour,...autant de fois la ligne que la
valeur n de cette ligne.
presque,, en fait de 3 jusqu'à la valeur
C'est ce que tu as mis en boucle:
Pour chaque ligne de 3 à la dernière remplie
écris moi Sheets("Saisie").Range... en Sheets("Recettes").Range(...
Voir ci après rectif.
Amicales salutations.
--
lSteph
Essaie ainsi:
'******
Private Sub Worksheet_Change(ByVal Target As Range)
Dim niveau As Range
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Set niveau = Range("E65536").End(xlUp)
If Target.Row < niveau.Row Then Exit Sub
Application.EnableEvents = False
If IsNumeric(niveau.Value) = False Then
Select Case UCase(Left(niveau, 1))
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
End If
Application.EnableEvents = True
End SubBonjour à tous(tes)
J'essaie que la dernière ligne renseignée dans une feuille de saisie
soit copiée dans une autre feuille, en fonction de la lettre saisie
en colonne E.
Malheureusement, cette procédure me copie autant de fois la ligne que
la valeur n de cette ligne.
SVP, comment éviter cela?
Merci
'******
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
For n = 3 To Range("E65536").End(xlUp).Row
niveau = Range("E" & n)
Application.EnableEvents = False
If IsNumeric(niveau) = False Then niveau = UCase(niveau)
'ceci marche, bien que le caractère saisi reste comme il a été saisi
Select Case Left(niveau, 1) 'comment aussi mettre le UCase ici??
'ne considère que le caractère de gauche de la saisie
Case "R"
Sheets("Recettes").Range("a65536").End(xlUp). _
Offset(1, 0).EntireRow.Value _
= Sheets("Saisie").Range("a65536").End(xlUp). _
EntireRow.Value
'Case ...
End Select
Next n
Application.EnableEvents = True
End Sub
'******
@+
J@@