Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Dupliquer dans Excel 2003 ?

13 réponses
Avatar
Michel69
Bonjour à toutes et à tous,
Tout d'abord un grand Merci à MPO pour son aide (et aux autres aussi..).
Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je saisi
une ligne sur cette feuille (feuil1), serait-il possible qu'en même temps
(ou en différé), ma ligne soit intégralement recopiée sur une autre feuille
portant le nom saisi.
En vous remerciant par avance
Michel69

10 réponses

1 2
Avatar
CAP2
Salut,

juste une question : La ligne doit être recopiée dans une feuille déjà
existante, ou faut-il que le code crée la feuille, puis recopie dedans ?

N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul ?

OK, ça fait 2 questions ;o))

CAP2

"Michel69" a écrit dans le message de
news:
Bonjour à toutes et à tous,
Tout d'abord un grand Merci à MPO pour son aide (et aux autres aussi..).
Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
saisi
une ligne sur cette feuille (feuil1), serait-il possible qu'en même temps
(ou en différé), ma ligne soit intégralement recopiée sur une autre
feuille
portant le nom saisi.
En vous remerciant par avance
Michel69


Avatar
Michel69
Bonjour CAP2,
Merci pour ton aide.
En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà et
alors on copie la ligne à la suite des autres, soit l'onglet n'existe pas et
il faut le créer dans la foulée puis écrire la ligne...
Michel69

"CAP2" a écrit :

Salut,

juste une question : La ligne doit être recopiée dans une feuille déjà
existante, ou faut-il que le code crée la feuille, puis recopie dedans ?

N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul ?

OK, ça fait 2 questions ;o))

CAP2

"Michel69" a écrit dans le message de
news:
> Bonjour à toutes et à tous,
> Tout d'abord un grand Merci à MPO pour son aide (et aux autres aussi..).
> Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
> saisi
> une ligne sur cette feuille (feuil1), serait-il possible qu'en même temps
> (ou en différé), ma ligne soit intégralement recopiée sur une autre
> feuille
> portant le nom saisi.
> En vous remerciant par avance
> Michel69





Avatar
CAP2
Salut,

je te propose une macro que tu déclenches dès que tu as saisi une nouvelle
personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
donc à chaque nouvelle saisie, tu déclenches la macro)

Sub Michel()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message de
news:
Bonjour CAP2,
Merci pour ton aide.
En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà et
alors on copie la ligne à la suite des autres, soit l'onglet n'existe pas
et
il faut le créer dans la foulée puis écrire la ligne...
Michel69

"CAP2" a écrit :

Salut,

juste une question : La ligne doit être recopiée dans une feuille déjà
existante, ou faut-il que le code crée la feuille, puis recopie dedans ?

N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul
?

OK, ça fait 2 questions ;o))

CAP2

"Michel69" a écrit dans le message
de
news:
> Bonjour à toutes et à tous,
> Tout d'abord un grand Merci à MPO pour son aide (et aux autres
> aussi..).
> Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
> saisi
> une ligne sur cette feuille (feuil1), serait-il possible qu'en même
> temps
> (ou en différé), ma ligne soit intégralement recopiée sur une autre
> feuille
> portant le nom saisi.
> En vous remerciant par avance
> Michel69







Avatar
Michel69
(Re) CAP2,
J'ai recopié ton code dans un module standard et je l'ai placé derrière un
bouton. Je saisi un nom puis quand je clique sur le bouton il se plante sur :
Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Cordialement
Michel

"CAP2" a écrit :

Salut,

je te propose une macro que tu déclenches dès que tu as saisi une nouvelle
personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
donc à chaque nouvelle saisie, tu déclenches la macro)

Sub Michel()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message de
news:
> Bonjour CAP2,
> Merci pour ton aide.
> En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà et
> alors on copie la ligne à la suite des autres, soit l'onglet n'existe pas
> et
> il faut le créer dans la foulée puis écrire la ligne...
> Michel69
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> juste une question : La ligne doit être recopiée dans une feuille déjà
>> existante, ou faut-il que le code crée la feuille, puis recopie dedans ?
>>
>> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul
>> ?
>>
>> OK, ça fait 2 questions ;o))
>>
>> CAP2
>>
>> "Michel69" a écrit dans le message
>> de
>> news:
>> > Bonjour à toutes et à tous,
>> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> > aussi..).
>> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
>> > saisi
>> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> > temps
>> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> > feuille
>> > portant le nom saisi.
>> > En vous remerciant par avance
>> > Michel69
>>
>>
>>





Avatar
Michel69
Merci pour tout CAP2. J'ai trouvé l'erreur et maintenant le code fonctionne
nickel
Croisement de patte (pas de feuil1) dans les noms de feuille.
nom = Worksheets("bdd").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("bdd").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("bdd").Select
................
Merci encore

"Michel69" a écrit :

(Re) CAP2,
J'ai recopié ton code dans un module standard et je l'ai placé derrière un
bouton. Je saisi un nom puis quand je clique sur le bouton il se plante sur :
Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Cordialement
Michel

"CAP2" a écrit :

> Salut,
>
> je te propose une macro que tu déclenches dès que tu as saisi une nouvelle
> personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
> donc à chaque nouvelle saisie, tu déclenches la macro)
>
> Sub Michel()
> Dim i As Integer
> Dim existe As Boolean
> Dim nom As String
>
> Application.ScreenUpdating = False
>
> nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value
>
> For i = 1 To Sheets.Count
> If Sheets(i).Name = nom Then
> existe = True
> End If
> Next
>
> Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
> Selection.Copy
>
> If existe = True Then
> Worksheets(nom).Select
> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
> ActiveSheet.Paste
> ActiveSheet.Range("A1").Select
> Else
>
> Sheets.Add
> ActiveSheet.Name = nom
> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
> ActiveSheet.Paste
> ActiveSheet.Range("A1").Select
> End If
>
> Worksheets("Feuil1").Select
> ActiveSheet.Range("A1").Select
>
> Application.CutCopyMode = False
>
> Application.ScreenUpdating = True
>
> End Sub
>
> Ca marche ?
>
> CAP2
>
> "Michel69" a écrit dans le message de
> news:
> > Bonjour CAP2,
> > Merci pour ton aide.
> > En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà et
> > alors on copie la ligne à la suite des autres, soit l'onglet n'existe pas
> > et
> > il faut le créer dans la foulée puis écrire la ligne...
> > Michel69
> >
> > "CAP2" a écrit :
> >
> >> Salut,
> >>
> >> juste une question : La ligne doit être recopiée dans une feuille déjà
> >> existante, ou faut-il que le code crée la feuille, puis recopie dedans ?
> >>
> >> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul
> >> ?
> >>
> >> OK, ça fait 2 questions ;o))
> >>
> >> CAP2
> >>
> >> "Michel69" a écrit dans le message
> >> de
> >> news:
> >> > Bonjour à toutes et à tous,
> >> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
> >> > aussi..).
> >> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
> >> > saisi
> >> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
> >> > temps
> >> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
> >> > feuille
> >> > portant le nom saisi.
> >> > En vous remerciant par avance
> >> > Michel69
> >>
> >>
> >>
>
>
>


Avatar
CAP2
(Re)Salut,

ta feuille de saisie s'appelle-t-elle bien Feuil1 ?

Si oui, le problème ne vient pas de là. Tente de remplacer cette ligne par :

Worksheets("Feuil1").Select
Activesheet.Range("A65536").End(xlUp).EntireRow.Select

Ca marche mieux ?

CAP2

"Michel69" a écrit dans le message de
news:
(Re) CAP2,
J'ai recopié ton code dans un module standard et je l'ai placé derrière un
bouton. Je saisi un nom puis quand je clique sur le bouton il se plante
sur :
Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Cordialement
Michel

"CAP2" a écrit :

Salut,

je te propose une macro que tu déclenches dès que tu as saisi une
nouvelle
personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
donc à chaque nouvelle saisie, tu déclenches la macro)

Sub Michel()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message
de
news:
> Bonjour CAP2,
> Merci pour ton aide.
> En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà
> et
> alors on copie la ligne à la suite des autres, soit l'onglet n'existe
> pas
> et
> il faut le créer dans la foulée puis écrire la ligne...
> Michel69
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> juste une question : La ligne doit être recopiée dans une feuille déjà
>> existante, ou faut-il que le code crée la feuille, puis recopie dedans
>> ?
>>
>> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de
>> calcul
>> ?
>>
>> OK, ça fait 2 questions ;o))
>>
>> CAP2
>>
>> "Michel69" a écrit dans le
>> message
>> de
>> news:
>> > Bonjour à toutes et à tous,
>> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> > aussi..).
>> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque
>> > je
>> > saisi
>> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> > temps
>> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> > feuille
>> > portant le nom saisi.
>> > En vous remerciant par avance
>> > Michel69
>>
>>
>>







Avatar
Michel69
CAP2,
Ma feuille de saisie s'appelle BDD. J'ai remplacé et ton code fonctionne
parfaitement
Merci encore
Michel

"CAP2" a écrit :

(Re)Salut,

ta feuille de saisie s'appelle-t-elle bien Feuil1 ?

Si oui, le problème ne vient pas de là. Tente de remplacer cette ligne par :

Worksheets("Feuil1").Select
Activesheet.Range("A65536").End(xlUp).EntireRow.Select

Ca marche mieux ?

CAP2

"Michel69" a écrit dans le message de
news:
> (Re) CAP2,
> J'ai recopié ton code dans un module standard et je l'ai placé derrière un
> bouton. Je saisi un nom puis quand je clique sur le bouton il se plante
> sur :
> Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
> Cordialement
> Michel
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> je te propose une macro que tu déclenches dès que tu as saisi une
>> nouvelle
>> personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
>> donc à chaque nouvelle saisie, tu déclenches la macro)
>>
>> Sub Michel()
>> Dim i As Integer
>> Dim existe As Boolean
>> Dim nom As String
>>
>> Application.ScreenUpdating = False
>>
>> nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value
>>
>> For i = 1 To Sheets.Count
>> If Sheets(i).Name = nom Then
>> existe = True
>> End If
>> Next
>>
>> Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
>> Selection.Copy
>>
>> If existe = True Then
>> Worksheets(nom).Select
>> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
>> ActiveSheet.Paste
>> ActiveSheet.Range("A1").Select
>> Else
>>
>> Sheets.Add
>> ActiveSheet.Name = nom
>> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
>> ActiveSheet.Paste
>> ActiveSheet.Range("A1").Select
>> End If
>>
>> Worksheets("Feuil1").Select
>> ActiveSheet.Range("A1").Select
>>
>> Application.CutCopyMode = False
>>
>> Application.ScreenUpdating = True
>>
>> End Sub
>>
>> Ca marche ?
>>
>> CAP2
>>
>> "Michel69" a écrit dans le message
>> de
>> news:
>> > Bonjour CAP2,
>> > Merci pour ton aide.
>> > En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà
>> > et
>> > alors on copie la ligne à la suite des autres, soit l'onglet n'existe
>> > pas
>> > et
>> > il faut le créer dans la foulée puis écrire la ligne...
>> > Michel69
>> >
>> > "CAP2" a écrit :
>> >
>> >> Salut,
>> >>
>> >> juste une question : La ligne doit être recopiée dans une feuille déjà
>> >> existante, ou faut-il que le code crée la feuille, puis recopie dedans
>> >> ?
>> >>
>> >> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de
>> >> calcul
>> >> ?
>> >>
>> >> OK, ça fait 2 questions ;o))
>> >>
>> >> CAP2
>> >>
>> >> "Michel69" a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Bonjour à toutes et à tous,
>> >> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> >> > aussi..).
>> >> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque
>> >> > je
>> >> > saisi
>> >> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> >> > temps
>> >> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> >> > feuille
>> >> > portant le nom saisi.
>> >> > En vous remerciant par avance
>> >> > Michel69
>> >>
>> >>
>> >>
>>
>>
>>





Avatar
Michel69
CAP2
Ton code fonctionne parfaitement mais en changeant le nom feuil1 par celui
de ma feuille de saisie "BDD".
Puis-je te (re)mettre à contribution ? Dans la création de l'onglet s'il
n'existe pas quel serait le bout de code qui me permettrait de recopier
l'entête des colonnes de BDD 1 seule fois par fiche
Encore merci
Michel

"CAP2" a écrit :

Salut,

je te propose une macro que tu déclenches dès que tu as saisi une nouvelle
personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
donc à chaque nouvelle saisie, tu déclenches la macro)

Sub Michel()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message de
news:
> Bonjour CAP2,
> Merci pour ton aide.
> En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà et
> alors on copie la ligne à la suite des autres, soit l'onglet n'existe pas
> et
> il faut le créer dans la foulée puis écrire la ligne...
> Michel69
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> juste une question : La ligne doit être recopiée dans une feuille déjà
>> existante, ou faut-il que le code crée la feuille, puis recopie dedans ?
>>
>> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de calcul
>> ?
>>
>> OK, ça fait 2 questions ;o))
>>
>> CAP2
>>
>> "Michel69" a écrit dans le message
>> de
>> news:
>> > Bonjour à toutes et à tous,
>> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> > aussi..).
>> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque je
>> > saisi
>> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> > temps
>> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> > feuille
>> > portant le nom saisi.
>> > En vous remerciant par avance
>> > Michel69
>>
>>
>>





Avatar
CAP2
Excuse de l'attente,

remplace mon 1er code par celui-ci, et tes en-têtes seront écrits
automatiquement quand il créera une nouvelle feuille !

Private Sub CommandButton1_Click()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("BDD").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

If existe = True Then
Worksheets("BDD").Select
ActiveSheet.Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
Worksheets("BDD").Select
ActiveSheet.Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
Worksheets("BDD").Select
ActiveSheet.Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("BDD").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message de
news:
CAP2
Ton code fonctionne parfaitement mais en changeant le nom feuil1 par celui
de ma feuille de saisie "BDD".
Puis-je te (re)mettre à contribution ? Dans la création de l'onglet s'il
n'existe pas quel serait le bout de code qui me permettrait de recopier
l'entête des colonnes de BDD 1 seule fois par fiche
Encore merci
Michel

"CAP2" a écrit :

Salut,

je te propose une macro que tu déclenches dès que tu as saisi une
nouvelle
personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
donc à chaque nouvelle saisie, tu déclenches la macro)

Sub Michel()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy

If existe = True Then
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("Feuil1").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message
de
news:
> Bonjour CAP2,
> Merci pour ton aide.
> En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà
> et
> alors on copie la ligne à la suite des autres, soit l'onglet n'existe
> pas
> et
> il faut le créer dans la foulée puis écrire la ligne...
> Michel69
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> juste une question : La ligne doit être recopiée dans une feuille déjà
>> existante, ou faut-il que le code crée la feuille, puis recopie dedans
>> ?
>>
>> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de
>> calcul
>> ?
>>
>> OK, ça fait 2 questions ;o))
>>
>> CAP2
>>
>> "Michel69" a écrit dans le
>> message
>> de
>> news:
>> > Bonjour à toutes et à tous,
>> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> > aussi..).
>> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque
>> > je
>> > saisi
>> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> > temps
>> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> > feuille
>> > portant le nom saisi.
>> > En vous remerciant par avance
>> > Michel69
>>
>>
>>







Avatar
Michel69
Merci pour tout CAP2, tout fonctionne comme je le souhaitais.
Tu ne connaîtrais pas la 'commande' pour q'un bouton sur une feuille ne
bouge pas avec elle ?

"CAP2" a écrit :

Excuse de l'attente,

remplace mon 1er code par celui-ci, et tes en-têtes seront écrits
automatiquement quand il créera une nouvelle feuille !

Private Sub CommandButton1_Click()
Dim i As Integer
Dim existe As Boolean
Dim nom As String

Application.ScreenUpdating = False

nom = Worksheets("BDD").Range("A65536").End(xlUp).Value

For i = 1 To Sheets.Count
If Sheets(i).Name = nom Then
existe = True
End If
Next

If existe = True Then
Worksheets("BDD").Select
ActiveSheet.Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
Else

Sheets.Add
ActiveSheet.Name = nom
Worksheets("BDD").Select
ActiveSheet.Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A1").Select
ActiveSheet.Paste
Worksheets("BDD").Select
ActiveSheet.Range("A65536").End(xlUp).EntireRow.Select
Selection.Copy
Worksheets(nom).Select
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveSheet.Range("A1").Select
End If

Worksheets("BDD").Select
ActiveSheet.Range("A1").Select

Application.CutCopyMode = False

Application.ScreenUpdating = True

End Sub

Ca marche ?

CAP2

"Michel69" a écrit dans le message de
news:
> CAP2
> Ton code fonctionne parfaitement mais en changeant le nom feuil1 par celui
> de ma feuille de saisie "BDD".
> Puis-je te (re)mettre à contribution ? Dans la création de l'onglet s'il
> n'existe pas quel serait le bout de code qui me permettrait de recopier
> l'entête des colonnes de BDD 1 seule fois par fiche
> Encore merci
> Michel
>
> "CAP2" a écrit :
>
>> Salut,
>>
>> je te propose une macro que tu déclenches dès que tu as saisi une
>> nouvelle
>> personne (Mon code ne tiendra compte que de la DERNIERE personne saisie,
>> donc à chaque nouvelle saisie, tu déclenches la macro)
>>
>> Sub Michel()
>> Dim i As Integer
>> Dim existe As Boolean
>> Dim nom As String
>>
>> Application.ScreenUpdating = False
>>
>> nom = Worksheets("Feuil1").Range("A65536").End(xlUp).Value
>>
>> For i = 1 To Sheets.Count
>> If Sheets(i).Name = nom Then
>> existe = True
>> End If
>> Next
>>
>> Worksheets("Feuil1").Range("A65536").End(xlUp).EntireRow.Select
>> Selection.Copy
>>
>> If existe = True Then
>> Worksheets(nom).Select
>> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
>> ActiveSheet.Paste
>> ActiveSheet.Range("A1").Select
>> Else
>>
>> Sheets.Add
>> ActiveSheet.Name = nom
>> ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Select
>> ActiveSheet.Paste
>> ActiveSheet.Range("A1").Select
>> End If
>>
>> Worksheets("Feuil1").Select
>> ActiveSheet.Range("A1").Select
>>
>> Application.CutCopyMode = False
>>
>> Application.ScreenUpdating = True
>>
>> End Sub
>>
>> Ca marche ?
>>
>> CAP2
>>
>> "Michel69" a écrit dans le message
>> de
>> news:
>> > Bonjour CAP2,
>> > Merci pour ton aide.
>> > En fait, en fonction du nom saisi sur feuil1, soit l'onglet existe déjà
>> > et
>> > alors on copie la ligne à la suite des autres, soit l'onglet n'existe
>> > pas
>> > et
>> > il faut le créer dans la foulée puis écrire la ligne...
>> > Michel69
>> >
>> > "CAP2" a écrit :
>> >
>> >> Salut,
>> >>
>> >> juste une question : La ligne doit être recopiée dans une feuille déjà
>> >> existante, ou faut-il que le code crée la feuille, puis recopie dedans
>> >> ?
>> >>
>> >> N'y aura-t-il donc qu'une seule ligne dans chacune des feuilles de
>> >> calcul
>> >> ?
>> >>
>> >> OK, ça fait 2 questions ;o))
>> >>
>> >> CAP2
>> >>
>> >> "Michel69" a écrit dans le
>> >> message
>> >> de
>> >> news:
>> >> > Bonjour à toutes et à tous,
>> >> > Tout d'abord un grand Merci à MPO pour son aide (et aux autres
>> >> > aussi..).
>> >> > Sur une feuille j'ai des colonnes (noms, prénoms, âge....). Lorsque
>> >> > je
>> >> > saisi
>> >> > une ligne sur cette feuille (feuil1), serait-il possible qu'en même
>> >> > temps
>> >> > (ou en différé), ma ligne soit intégralement recopiée sur une autre
>> >> > feuille
>> >> > portant le nom saisi.
>> >> > En vous remerciant par avance
>> >> > Michel69
>> >>
>> >>
>> >>
>>
>>
>>





1 2