Rajout et recopie de fiche

  • Initiateur de la discussion Initiateur de la discussion guitou77
  • 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 !

Re : Rajout et recopie de fiche

hello

oui tout a fais possible,
C est un exercice assez simple et simpas a faire!
L'enregistreur de macro te sera indispensable !!!

-Tu enregistre la facon dont tu veux creer une fiche
-Tu fais une boucle sur tes nom , prenom et tu met en variable ce que tu a besoin dans ce que la macro a enregistré ...

Si tu bloques demande de l aide !!! ou regarde il y a plein de fichier qui traite plus ou moins de ca ... lis du VBA execute les programme pas a pas (F8) et dans maxi 2 jours tu as fais ton outil!!!


good luck
 
Re : Rajout et recopie de fiche

Bonsoir


suistrop:
tu n'as du ouvrir la pièce jointe
ou plutot remarquer le code présent ainsi que celui présent dans la feuille Fichier Client

Car on y voit que l'enregistreur de macros a servi.

Hello crumble vba !

En effet je n ai pas regarder si il y avais du code.

voila un début de code qui traite ce que tu demandes si personne n a le meme nom ET prenom en meme tps 🙂
Code:
Sub test()
Dim ws As Worksheet
Sheets("Fichier client").Select
For i = 2 To Range("A65536").End(xlUp).Row
    Nom = Cells(i, 1)
    prenom = Cells(i, 2)
    present = False
    For Each ws In ActiveWorkbook.Sheets
    toto = ws.Name
        If ws.Name = Nom Then
            ws.Select
            If Cells(2, 2) = prenom Then
                'onglet deja creer
                present = True
            Else
                'on creer l onglet avec son prenom a la fin
                Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
                Sheets("Modèle (2)").Name = Nom & "_" & prenom
                Sheets(Nom & "_" & prenom).Select
                Cells(1, 2) = Nom
                Cells(2, 2) = prenom
                present = True
            End If
        End If
    Next ws
    If present = False Then
            'on creer l onglet avec le nom et le prenom
            Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
            Sheets("Modèle (2)").Name = Nom
            Sheets(Nom).Select
            Cells(1, 2) = Nom
            Cells(2, 2) = prenom
    End If
Sheets("Modèle").Select
Cells(1, 2) = ""
Cells(2, 2) = ""
Sheets("Fichier client").Select
Next i
End Sub
A savoir si ca convient....

+++
 

Pièces jointes

Re : Rajout et recopie de fiche

Bonsoir le forum, vbacrumble et suistrop,

Suistrop, merci pour ton fichier qui fonctionne bien, mais il me recopie toutes les fiches en même temps alors qu'il faut les copier une par une, en double
cliquant sur le nom voulu dans le fichier client (comme dans le fichier joint).

Merci encore et@+.
 
Re : Rajout et recopie de fiche

Salut,
En effet j ai meme pas fais attention 🙂

Tu peux adapter le code non?
suffit de supprimer la boucle sur les ligne , d'utiliser le for each ws .... le reste tu sembles deja savoir le faire !!!
 
Re : Rajout et recopie de fiche

hello,
j utilise jamais les macro avec double click donc je maitrise pas :/ en esperant que ca aille !!! a améliorer bien sur histoire de savoir ce qui a été fais a l aide des msg box ....
 

Pièces jointes

Re : Rajout et recopie de fiche

Salut, je vais essayer de le commenter

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim ws As Worksheet
Sheets("Fichier client").Select'ici on dit du on se place dans l onglet fichier client meme si par defaut vu que la macro est ici est privée on est tjs situé dans l onglet fichier client , c est tjs bon de le rappeler
Nom = Target.Value'ici target est l endroit ou la cellule a été selectionner on prend donc la valeur qui est le nom !!! 
prenom = Cells(Target.Row, 2).Value'ici on cherche a avoir le prenom on sais que c est sur la meme ligne target.row donne le numéro de la ligne et sur la colonne 2
present = 2 ' present prend 3 valeurs : (2 = nouvelle fiche , 1 = nouvelle fiche mais avec prenom car le nom existe deja,0 = fiche deja creer
'ici present est notre indicateur par defaut on dit que la personne que l on va regarder est nouvelle, donc present = 2 ( ou "nouvelle" ... a toi de choisir le code que tu veux !!!! ici j ai fais simple avec 0 1 2 )
    For Each ws In Worksheets'une fois qu on a le prenom et le nom on va voir sur tout les onglet deja creer si on a pas deja traiter ce cas
    'toto = ws.Name
        If ws.Name = Nom Then'si ws.name c est a dire le nom de l onglet qu on regarde est le meme que le nom ca veu dire qu on a deja traité de nom 2 cas de figures...
            ws.Select
            If Sheets(ws.Name).Cells(2, 2) = prenom Then'meme prenom
                'onglet deja creer
                present = 0'ici meme nom , meme prenom il faut pas le recreer on met present = 0 ou present = " deja creer" comme tu veux !!!
            Else
                present = 1 ' si meme nom mais aucune fiche avec meme prenom present = 1 on sais que on va devoir creer une fiche nom_prenom quand present = 1
            End If
        End If
    Next ws 'on passe a l onglet suivant jusqu a les avoir tous vu !!!
    If present = 2 Then 'on traite les cas .....ici present = 2 ca ve dire nouvelle fiche car nom jamais traité
            'on creer l onglet avec le nom
            Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
            Sheets("Modèle (2)").Name = Nom
            Sheets(Nom).Cells(1, 2) = Nom
            Sheets(Nom).Cells(2, 2) = prenom
            Sheets("Modèle").Cells(1, 2) = ""
            Sheets("Modèle").Cells(2, 2) = ""
    ElseIf present = 1 Then
        'on creer l onglet avec son prenom a la fin
            Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
            Sheets("Modèle (2)").Name = Nom & "_" & prenom
            Sheets(Nom & "_" & prenom).Cells(1, 2) = Nom
            Sheets(Nom & "_" & prenom).Cells(2, 2) = prenom
            Sheets("Modèle").Cells(1, 2) = ""
            Sheets("Modèle").Cells(2, 2) = ""
    End If
Sheets("Fichier client").Select'pour se remettre sur fichier client a la fin !!!
End Sub
 
Re : Rajout et recopie de fiche

Bonsoir le forum, bonsoir suistrop,

Merci suistrop pour le commentaire de la macro qui fonctionne très bien.

Encore une petite question ci celà est possible.
Explication sur le dossier joint (j'ai fait des recherches sur le forum, mais je
n'ai pas trouvé de réponse adéquate).
Encore merci et @+.
 

Pièces jointes

Re : Rajout et recopie de fiche

Bonjour le forum, bonjour suistrop,

Merci suistrop pour ton code qui fonctionne impeccable.
Je ne suis pas du tout préparé "Oseras-tu m'affronter?", il y a encore du chemin à faire, peut être un jour viendra, mais quand ????.

Encore tous mes remerciements et @+.
 
- 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
2
Affichages
141
Réponses
6
Affichages
209
Réponses
4
Affichages
326
Réponses
12
Affichages
385
Réponses
4
Affichages
386
Réponses
14
Affichages
506
Retour