J'utilise le code suivant 4 fois de suite avec des plages différentes bien
entendu.
La feuille se copie quand on répond oui à la dernière question=MsgBox
"facturation sur 12 mois ?"
Or, si je répond oui 4 fois, la feuille se copie 4 fois. Mon souhait est que
la feuille active ne se copie qu'une seule fois quelque soit l'ordre dans
lequel on répond à la question.
If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then
question = MsgBox("Est-ce un NEW ?", vbYesNo,
Application.UserName)
If question = vbYes Then
question = MsgBox("La facturation se fait-elle sur 12 mois
?", 4, Application.UserName)
If question = 7 Then
Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub
Else
ActiveSheet.Copy after:=Sheets(Sheets.Count)
End If
End If
End If
Autrement dit, la commande "Active.copy after " ne doit s'exécuter que la
première fois où l'on répond oui à la question.
Salut Nico ActiveSheet.Copy after:=Sheets(Sheets.Count) Exit sub 'ici on le fait sortir de la procédure aprés avoir copié End If
youky
Nicoh
Bonjour Youky,
Merci de ta réponse, mais cela ne répond pas vraiment à ma problématique. En fait, dans la plage "BA6:CC6", on suppose que je mettes 59 en BA6. Je dois alors répondre à la question de la facturation : si oui la feuille active se copie. Si je mets 60 en BC6, j'ai aussi la question et je répond oui, la feuille se copie une deuxième fois. Or, ce que je veux obtenir, c'est une copie de la feuille active une seule fois dès la première fois où la question est posée.
D'avance merci,
Nicoh
Salut Nico ActiveSheet.Copy after:=Sheets(Sheets.Count) Exit sub 'ici on le fait sortir de la procédure aprés avoir copié End If
youky
Bonjour Youky,
Merci de ta réponse, mais cela ne répond pas vraiment à ma problématique.
En fait, dans la plage "BA6:CC6", on suppose que je mettes 59 en BA6. Je
dois alors répondre à la question de la facturation : si oui la feuille
active se copie.
Si je mets 60 en BC6, j'ai aussi la question et je répond oui, la feuille
se copie une deuxième fois.
Or, ce que je veux obtenir, c'est une copie de la feuille active une seule
fois dès la première fois où la question est posée.
D'avance merci,
Nicoh
Salut Nico
ActiveSheet.Copy after:=Sheets(Sheets.Count)
Exit sub 'ici on le fait sortir de la procédure aprés avoir copié
End If
Merci de ta réponse, mais cela ne répond pas vraiment à ma problématique. En fait, dans la plage "BA6:CC6", on suppose que je mettes 59 en BA6. Je dois alors répondre à la question de la facturation : si oui la feuille active se copie. Si je mets 60 en BC6, j'ai aussi la question et je répond oui, la feuille se copie une deuxième fois. Or, ce que je veux obtenir, c'est une copie de la feuille active une seule fois dès la première fois où la question est posée.
D'avance merci,
Nicoh
Salut Nico ActiveSheet.Copy after:=Sheets(Sheets.Count) Exit sub 'ici on le fait sortir de la procédure aprés avoir copié End If
youky
Youky
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Private Sub CommandButton1_Click()
'le dim en tete de macro
Dim impr(4) As Boolean
'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false
If impr(boucle) = False Then
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True
End If
'
'
'
End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus
If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then
question = MsgBox("Est-ce un NEW ?", vbYesNo,
Application.UserName)
If question = vbYes Then
question = MsgBox("La facturation se fait-elle sur 12 mois
?", 4, Application.UserName)
If question = 7 Then
Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub
Else
boucle=boucle+1 'ici en plus
If impr(boucle) = False Then 'ici en plus
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True 'ici en plus
End If 'ici en plus
End If
End If
End If
'et la suite, remettre pareil sauf le dim de départ
Youky
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Nicoh
Youky,
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens de comprendre que j'ai demandé, il me semble, le contraire du résultat que je veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche de zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond oui à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 = feuille2. Puis, je reviens sur la feuille 1 (je pense que mon erreur dans l'explication est là), en BC16 je répond oui à la question et là, il ne doit pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se passer, cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de t'avoir mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Youky,
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens de
comprendre que j'ai demandé, il me semble, le contraire du résultat que je
veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche de
zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond oui
à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 =
feuille2.
Puis, je reviens sur la feuille 1 (je pense que mon erreur dans
l'explication est là), en BC16 je répond oui à la question et là, il ne doit
pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se passer,
cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de t'avoir
mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click()
'le dim en tete de macro
Dim impr(4) As Boolean
'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false
If impr(boucle) = False Then
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True
End If
'
'
'
End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus
If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then
question = MsgBox("Est-ce un NEW ?", vbYesNo,
Application.UserName)
If question = vbYes Then
question = MsgBox("La facturation se fait-elle sur 12 mois
?", 4, Application.UserName)
If question = 7 Then
Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub
Else
boucle=boucle+1 'ici en plus
If impr(boucle) = False Then 'ici en plus
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True 'ici en plus
End If 'ici en plus
End If
End If
End If
'et la suite, remettre pareil sauf le dim de départ
Youky
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens de comprendre que j'ai demandé, il me semble, le contraire du résultat que je veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche de zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond oui à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 = feuille2. Puis, je reviens sur la feuille 1 (je pense que mon erreur dans l'explication est là), en BC16 je répond oui à la question et là, il ne doit pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se passer, cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de t'avoir mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Youky
Trés difficile en effet de bien piger ta demande Je t'ai fais une macro comme je l'ai compris je rajoute le target.value pour le nom de l'onglet rajouté et me permet ensuite de voir ci celui-ci existe déja Vendredi je serai libre que dans la soirée Youky
Private Sub Worksheet_Change(ByVal Target As Range) If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub 'si le nom n'est pas Feuil1 on quitte If Target.Value = "" Then Exit Sub If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois? ", 4, Application.UserName) If question = vbNo Then Feuil1.Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else zz = "" For k = 1 To Sheets.Count If Sheets(k).Name = Target.Value Then zz = 1: Exit For Next If zz = "" Then ActiveSheet.Copy after:=Sheets(Sheets.Count) ActiveSheet.Name = Target.Value Feuil1.Select End If End If End If End If
End Sub
"Nicoh" a écrit dans le message de news:
Youky,
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens de comprendre que j'ai demandé, il me semble, le contraire du résultat que je veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche de zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond oui à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 > feuille2. Puis, je reviens sur la feuille 1 (je pense que mon erreur dans l'explication est là), en BC16 je répond oui à la question et là, il ne doit pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se passer, cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de t'avoir mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Trés difficile en effet de bien piger ta demande
Je t'ai fais une macro comme je l'ai compris
je rajoute le target.value pour le nom de l'onglet rajouté et me permet
ensuite de voir ci celui-ci existe déja
Vendredi je serai libre que dans la soirée
Youky
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub 'si le nom n'est pas
Feuil1 on quitte
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then
question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName)
If question = vbYes Then
question = MsgBox("La facturation se fait-elle sur 12 mois? ",
4, Application.UserName)
If question = vbNo Then
Feuil1.Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub
Else
zz = ""
For k = 1 To Sheets.Count
If Sheets(k).Name = Target.Value Then zz = 1: Exit For
Next
If zz = "" Then
ActiveSheet.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Target.Value
Feuil1.Select
End If
End If
End If
End If
End Sub
"Nicoh" <Nicoh@discussions.microsoft.com> a écrit dans le message de news:
1C6333D4-8997-4589-AD51-A41FE95C89A8@microsoft.com...
Youky,
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens
de
comprendre que j'ai demandé, il me semble, le contraire du résultat que je
veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche
de
zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond
oui
à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 > feuille2.
Puis, je reviens sur la feuille 1 (je pense que mon erreur dans
l'explication est là), en BC16 je répond oui à la question et là, il ne
doit
pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se
passer,
cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de
t'avoir
mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click()
'le dim en tete de macro
Dim impr(4) As Boolean
'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false
If impr(boucle) = False Then
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True
End If
'
'
'
End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus
If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then
question = MsgBox("Est-ce un NEW ?", vbYesNo,
Application.UserName)
If question = vbYes Then
question = MsgBox("La facturation se fait-elle sur 12
mois
?", 4, Application.UserName)
If question = 7 Then
Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub
Else
boucle=boucle+1 'ici en plus
If impr(boucle) = False Then 'ici en plus
ActiveSheet.Copy after:=Sheets(Sheets.Count)
impr(boucle) = True 'ici en plus
End If 'ici en plus
End If
End If
End If
'et la suite, remettre pareil sauf le dim de départ
Youky
Trés difficile en effet de bien piger ta demande Je t'ai fais une macro comme je l'ai compris je rajoute le target.value pour le nom de l'onglet rajouté et me permet ensuite de voir ci celui-ci existe déja Vendredi je serai libre que dans la soirée Youky
Private Sub Worksheet_Change(ByVal Target As Range) If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub 'si le nom n'est pas Feuil1 on quitte If Target.Value = "" Then Exit Sub If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois? ", 4, Application.UserName) If question = vbNo Then Feuil1.Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else zz = "" For k = 1 To Sheets.Count If Sheets(k).Name = Target.Value Then zz = 1: Exit For Next If zz = "" Then ActiveSheet.Copy after:=Sheets(Sheets.Count) ActiveSheet.Name = Target.Value Feuil1.Select End If End If End If End If
End Sub
"Nicoh" a écrit dans le message de news:
Youky,
Je suis désolé mais je pense avoir mal expliqué ma problématique et viens de comprendre que j'ai demandé, il me semble, le contraire du résultat que je veux obtenir.
Tout d'abord, j'espère que tu es patient car mon niveau en VBA est proche de zéro. J'espère que tu voudras bien continuer à m'aider.
En fait je veux avoir une copie de la feuille 1 quand en BA16 on répond oui à la question de la facturation. Ainsi j'ai 2 feuilles avec feuille 1 > feuille2. Puis, je reviens sur la feuille 1 (je pense que mon erreur dans l'explication est là), en BC16 je répond oui à la question et là, il ne doit pas y avoir de copie. Pour le moment, je dirais qu'il ne doit rien se passer, cela se compliquera ensuite !
J'espère que c'est maintenant plus clair et suis vraiment désolé de t'avoir mal orienté.
D'avance merci pour ton éventuelle réponse.
Nicoh
Private Sub CommandButton1_Click() 'le dim en tete de macro Dim impr(4) As Boolean 'ton for ou while ou autres boucle qui se fait 4 fois
boucle = boucle + 1 ' on incrémente à chaque passage
'avant la copie on vérifie si toujours false If impr(boucle) = False Then ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True End If ' ' ' End Sub
ou encore si tu ne fait pas de boucle mais tout à la suite
Dim impr(4) As Boolean 'ici en plus If Not Intersect(Target, Range("ba16:cc16")) Is Nothing Then question = MsgBox("Est-ce un NEW ?", vbYesNo, Application.UserName) If question = vbYes Then question = MsgBox("La facturation se fait-elle sur 12 mois ?", 4, Application.UserName) If question = 7 Then Cells(Target.Row - 1, Target.Column) = "NEW": Exit Sub Else boucle=boucle+1 'ici en plus If impr(boucle) = False Then 'ici en plus ActiveSheet.Copy after:=Sheets(Sheets.Count) impr(boucle) = True 'ici en plus End If 'ici en plus End If End If End If 'et la suite, remettre pareil sauf le dim de départ Youky
Nicoh
Bonsoir Youky,
Je pense que tu dois être largement capable de réaliser une macro qui répond à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma macro initiale.
En feuille1, travaillons sur la ligne 1. En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la feuille 1 se copie et la copie obtenue s'appelle feuille 2. En B1 de la feuille 1, je rentre 11, il ne se passe donc rien. En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas, mais la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se copie pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2 ; feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où dans les deux plages considérées (ligne 1 et ligne 3) la condition (chiffre compris entre 1 et 10) est remplie. Autrement dit, si on reprend l'exemple mais dans le sens inverse, la feuille se copiera quand on commence à remplir A3 (=2) et ne se copie plus ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais pas comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,
Nicoh
Bonsoir Youky,
Je pense que tu dois être largement capable de réaliser une macro qui répond
à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer
d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma
macro initiale.
En feuille1, travaillons sur la ligne 1.
En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la
feuille 1 se copie et la copie obtenue s'appelle feuille 2.
En B1 de la feuille 1, je rentre 11, il ne se passe donc rien.
En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas, mais
la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se copie
pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2 ;
feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où
dans les deux plages considérées (ligne 1 et ligne 3) la condition (chiffre
compris entre 1 et 10) est remplie.
Autrement dit, si on reprend l'exemple mais dans le sens inverse, la feuille
se copiera quand on commence à remplir A3 (=2) et ne se copie plus ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais pas
comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,
Je pense que tu dois être largement capable de réaliser une macro qui répond à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma macro initiale.
En feuille1, travaillons sur la ligne 1. En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la feuille 1 se copie et la copie obtenue s'appelle feuille 2. En B1 de la feuille 1, je rentre 11, il ne se passe donc rien. En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas, mais la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se copie pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2 ; feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où dans les deux plages considérées (ligne 1 et ligne 3) la condition (chiffre compris entre 1 et 10) est remplie. Autrement dit, si on reprend l'exemple mais dans le sens inverse, la feuille se copiera quand on commence à remplir A3 (=2) et ne se copie plus ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais pas comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,
Nicoh
Youky
Voici une macro qui répond à ta demande je crois...... Par contre elle utilise que les lignes 1 et 3 et la copie se fait seulement lors d'un changement col A et que 1 ligne sur les 2 soit vide voici mon mail perso pour me contacter si besoin ou Pour tes tests click directement avec le bouton droit de souris sur l'onglet Feuil1 d'un classeur vierge et colle ceci
Private Sub Worksheet_Change(ByVal Target As Range) If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub If Not IsNumeric(Target.Value) Then Exit Sub If Target.Value > 10 Then Exit Sub If Target.Column <> 1 Then GoTo fin If Target.Row = 1 Then lig = 3 If Target.Row = 3 Then lig = 1 If lig = "" Then GoTo fin If Cells(lig, 1) = "" Then ActiveSheet.Copy after:=Sheets(Sheets.Count) Feuil1.Select End If fin: If lig > 0 Then Exit Sub If Target.Value > 10 Then Exit Sub Application.EnableEvents = False Sheets(Sheets.Count).Range(Target.Address) = Target.Value Application.EnableEvents = True End Sub
"Nicoh" a écrit dans le message de news:
Bonsoir Youky,
Je pense que tu dois être largement capable de réaliser une macro qui répond à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma macro initiale.
En feuille1, travaillons sur la ligne 1. En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la feuille 1 se copie et la copie obtenue s'appelle feuille 2. En B1 de la feuille 1, je rentre 11, il ne se passe donc rien. En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas, mais la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se copie pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2 ; feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où dans les deux plages considérées (ligne 1 et ligne 3) la condition (chiffre compris entre 1 et 10) est remplie. Autrement dit, si on reprend l'exemple mais dans le sens inverse, la feuille se copiera quand on commence à remplir A3 (=2) et ne se copie plus ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais pas comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,
Nicoh
Voici une macro qui répond à ta demande je crois......
Par contre elle utilise que les lignes 1 et 3 et la copie se fait seulement
lors d'un changement col A et que 1 ligne sur les 2 soit vide
voici mon mail perso pour me contacter si besoin
bruno.jeune@wanadoo.fr ou bruje@hotmail.fr
Pour tes tests click directement avec le bouton droit de souris sur l'onglet
Feuil1 d'un classeur vierge et colle ceci
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value > 10 Then Exit Sub
If Target.Column <> 1 Then GoTo fin
If Target.Row = 1 Then lig = 3
If Target.Row = 3 Then lig = 1
If lig = "" Then GoTo fin
If Cells(lig, 1) = "" Then
ActiveSheet.Copy after:=Sheets(Sheets.Count)
Feuil1.Select
End If
fin:
If lig > 0 Then Exit Sub
If Target.Value > 10 Then Exit Sub
Application.EnableEvents = False
Sheets(Sheets.Count).Range(Target.Address) = Target.Value
Application.EnableEvents = True
End Sub
"Nicoh" <Nicoh@discussions.microsoft.com> a écrit dans le message de news:
55999EF1-BE4B-4FBD-BDE0-17025AA134B4@microsoft.com...
Bonsoir Youky,
Je pense que tu dois être largement capable de réaliser une macro qui
répond
à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer
d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma
macro initiale.
En feuille1, travaillons sur la ligne 1.
En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la
feuille 1 se copie et la copie obtenue s'appelle feuille 2.
En B1 de la feuille 1, je rentre 11, il ne se passe donc rien.
En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas,
mais
la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se
copie
pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2
;
feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où
dans les deux plages considérées (ligne 1 et ligne 3) la condition
(chiffre
compris entre 1 et 10) est remplie.
Autrement dit, si on reprend l'exemple mais dans le sens inverse, la
feuille
se copiera quand on commence à remplir A3 (=2) et ne se copie plus
ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais
pas
comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,
Voici une macro qui répond à ta demande je crois...... Par contre elle utilise que les lignes 1 et 3 et la copie se fait seulement lors d'un changement col A et que 1 ligne sur les 2 soit vide voici mon mail perso pour me contacter si besoin ou Pour tes tests click directement avec le bouton droit de souris sur l'onglet Feuil1 d'un classeur vierge et colle ceci
Private Sub Worksheet_Change(ByVal Target As Range) If ActiveSheet.CodeName <> "Feuil1" Then Exit Sub If Not IsNumeric(Target.Value) Then Exit Sub If Target.Value > 10 Then Exit Sub If Target.Column <> 1 Then GoTo fin If Target.Row = 1 Then lig = 3 If Target.Row = 3 Then lig = 1 If lig = "" Then GoTo fin If Cells(lig, 1) = "" Then ActiveSheet.Copy after:=Sheets(Sheets.Count) Feuil1.Select End If fin: If lig > 0 Then Exit Sub If Target.Value > 10 Then Exit Sub Application.EnableEvents = False Sheets(Sheets.Count).Range(Target.Address) = Target.Value Application.EnableEvents = True End Sub
"Nicoh" a écrit dans le message de news:
Bonsoir Youky,
Je pense que tu dois être largement capable de réaliser une macro qui répond à ma demande, mais le plus dur est de me faire comprendre. Je vais essayer d'illustrer ma demande par un exemple simple que j'adapterais ensuite à ma macro initiale.
En feuille1, travaillons sur la ligne 1. En A1 je rentre un chiffre compris entre 1 et 10, disons 1. Alors, la feuille 1 se copie et la copie obtenue s'appelle feuille 2. En B1 de la feuille 1, je rentre 11, il ne se passe donc rien. En C1 de la feuille 1, je rentre 3, alors la feuille 1 ne se copie pas, mais la cellule C1 se copie uniquement en C1 de la feuille 2.
Considérons maintenant la ligne 3 avec A3=2, alors la feuille 1 ne se copie pas mais la cellule A3 se copie en feuille 2 en A3=2
Au final j'ai donc deux feuilles : feuille 1 où A1=1, B1, C1=3 et A3=2 ; feuille 2 A1=1, C1=3 et A3=2.
La feuille 1 ne se copie qu'une seule et unique fois : la première fois où dans les deux plages considérées (ligne 1 et ligne 3) la condition (chiffre compris entre 1 et 10) est remplie. Autrement dit, si on reprend l'exemple mais dans le sens inverse, la feuille se copiera quand on commence à remplir A3 (=2) et ne se copie plus ensuite.
En espérant que cet exemple soit plus compréhensible, sinon, je ne sais pas comment je vais faire.
en tout cas merci pour ton aide et ton implication à mon cas,