copie d'une feuille model + chgt d'une donnée.

  • Initiateur de la discussion Initiateur de la discussion begastor
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

begastor

XLDnaute Nouveau
Bonjour,

j'ai besoin d'un coup de main.

Dans un classeur, j'ai une feuille nommée "Activités".
En colonne A se trouve la liste des activités.
Je souhaite en double cliquant sur une activité, Ajouter au classeur une feuille type (elle s'appelle "model" dans mon classeur) qui porte de nom de l'activité, et dont la case A1 a pour valeur le nom de l'activité sur laquelle j'ai cliqué (ou le nom de la fiche créée puisque c'est le même...)

Suis-je clair ?

j'utilise cette fonction:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim cel As Range
Dim ws As Worksheet
Dim Nom As String

If Target.Column <> 1 Then Exit Sub
On Error Resume Next
Nom = Target.Value
If Nom = "" Then Exit Sub
For Each ws In Worksheets
If ws.Name = Nom Then
Call MsgBox("La feuille avec ce nom existe déja.", vbCritical, "Impossible de créer une feuille")
Exit Sub
End If
Next ws
Sheets.Add , Sheets(Worksheets.Count)
ActiveSheet.Name = Nom
Sheets("Model").Select.Copy
Sheets(Nom).Select.Paste
End Sub



Malheureusement, ça ne fonctionne pas...
Ca créé bien la fiche avec le bon nom, mais une fiche vide, pas avec mon model....

merci de m'aider, je perd un temps fou...

ciao
@+
 
Re : copie d'une feuille model + chgt d'une donnée.

bonjour et bienvenue,
Utilise les balises pour le code (# dans le menu)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Nom As String, ws As Worksheet
If Target.Column <> 1 Or Target = "" Then Exit Sub
Nom = Target
For Each ws In Worksheets
If ws.Name = Nom Then
MsgBox "La feuille avec ce nom existe déja.", vbCritical, "Impossible de créer une feuille"
Exit Sub
End If
Next ws
Cancel = True
Sheets("Model").Copy after:=Sheets(Worksheets.Count)
With ActiveSheet
    .Name = Nom
    .Range("A1") = Nom
End With

End Sub
A+
kjin
 
Re : copie d'une feuille model + chgt d'une donnée.

Bonjour à tous,
Puisque kjin est déconnecté:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Nom As String, ws As Worksheet
If Target.Column <> 1 Or Target = "" Then Exit Sub
Nom = Target
For Each ws In Worksheets
If ws.Name = Nom Then
MsgBox "La feuille avec ce nom existe déja.", vbCritical, "Impossible de créer une feuille"
Exit Sub
End If
Next ws
Cancel = True
Sheets("Model").Copy after:=Sheets(Worksheets.Count)
With ActiveSheet
    [B][COLOR="Red"].Unprotect[/COLOR][/B]
    .Name = Nom
    .Range("A1") = Nom
End With

End Sub

Cordialement,
Guiv
 
Re : copie d'une feuille model + chgt d'une donnée.

Bonjour,

ma demande du jour s'inscrit dans la continuité de celle d'hier.
lorsque je double clic en colonne "A" sur un nom de ma feuille "liste", je créé une autre feuille "model" dont le nom est le nom sur lequel j'ai cliqué. ensuite, ce nom se copie en case "B3" de cette nouvelle fiche.

Je souhaite:
que le prénom qui se trouve en colonne "B" à coté de celle dans laquelle je clique se retrouve en case B5 de la nouvelle feuille...
et que la date de naissance qui se trouve en colonne "C" se retrouve en case "N3"

Est-ce que quelquechose comme ça fonctionnerai ?
par contre, je ne connais pas la syntaxe...

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Nom As String, ws As Worksheet
If Target.Column <> 1 Or Target = "" Then Exit Sub
Nom = Target
[COLOR="Red"]Prénom = Target + 1  ??? [COLOR="RoyalBlue"](pour dire que c'est la case d'a coté de celle ou j'ai double cliqué...)[/COLOR]
Date = Target + 2 ???[/COLOR]
For Each ws In Worksheets
If ws.Name = Nom Then
MsgBox "La feuille avec ce nom existe déja.", vbCritical, "Impossible de créer une feuille"
Exit Sub
End If
Next ws
Cancel = True
Sheets("Model B").Copy after:=Sheets(Worksheets.Count)
With ActiveSheet
    .Name = Nom
    .Range("B3") = Nom
[COLOR="red"]    .Range("B5") = Prénom
    .Range("N3") = Date[/COLOR]
End With

End Sub

Merci beaucoup pour votre aide.
Bonne journée;

Ciao
 
Dernière édition:
Re : copie d'une feuille model + chgt d'une donnée.

je me suis débrouillé yes !!!

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Nom As String, ws As Worksheet

If Target.Column <> 1 Or Target = "" Then Exit Sub
Nom = Target
Prénom = Cells(Target.Row, Target.Column + 1)
DDN = Cells(Target.Row, Target.Column + 2)

For Each ws In Worksheets
If ws.Name = Nom Then
MsgBox "La feuille avec ce nom existe déja.", vbCritical, "Impossible de créer une feuille"
Exit Sub
End If
Next ws
Cancel = True
Sheets("Model B").Copy after:=Sheets(Worksheets.Count)
With ActiveSheet
    .Name = Nom
    .Range("B3") = Nom
    .Range("B5") = Prénom
    .Range("N3") = DDN
End With

End Sub
 
Re : copie d'une feuille model + chgt d'une donnée.

Bonjour,
Tu peux aussi utiliser la fonction "Offset":
Code:
Prénom=Target.Offset(0,1)
DDN=Target.Offset(0,2)

Le 0 est le nombre de ligne de décalage et le 1 (ou 2) le nombre de colonnes de décalage. Aide disponible en sélectionnant le mot Offset et F1.
Bonne journée,
Guiv
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
510
Réponses
10
Affichages
580
Réponses
15
Affichages
465
Réponses
2
Affichages
357
Retour