Macro

Pen_9367 Messages postés 9 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour, voila c'est la première fois que je dois réaliser une macro (enfin je pense que cela doit-être une macro), cependant après de multiples recherches et tentatives impossible de trouver ce qui me convient.
Explication : j'ai un fichier excel avec différents onglets dont un qui ma liste de toutes les commandes passées par les techniciens avec une colonne réceptionné pour indiquer si la commande est réceptionné, partielle ou vide donc en attente de réception.

J'ai un second onglet nommé PV de réception que les techniciens doivent compléter pour me permettre d'effectuer la réception.
J'aimerais cliquer sur un bouton afin que cela me créer un onglet par commandes non réceptionné ou partiellement réceptionné pour un seul technicien en particulier à partir du modèle PV de réception.

De plus, dans l'onglet PV de réception il y a une ligne n° de commande qui fait que dès que je rentre un numéro de commande cela inscrit automatiquement la description de la commande dans la ligne en dessous (rechercheX). C'est pourquoi j'aimerais que au moment ou je clique cela créer X onglets (selon le nombre de commande partielle ou non réceptionné du technicien Y et que le numéro de commande sois automatiquement inscrit dans ma cellule n° de commande)

Je ne sais pas si cela est possible.

J'espère avoir été "claire".

Merci d'avance pour l'aide

7 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peux-tu préparer un fichier d'exemple,
    - avec l'onglet de toutes les commandes
    - avec l'onglet du modèle de PV de réception
    - avec un onglet exactement comme tu souhaiterais que la macro le crée

    peux-tu aussi clarifier ce que tu écris:
    cliquer sur un bouton afin que cela me créer un onglet par commandes non réceptionné ou partiellement réceptionné pour un seul technicien
    - que veux-tu dire "pour un seul technicien"?
    - si tu cliques plusieurs fois sur le bouton, que veux-tu qu'il se passe? ne va-t-on pas créer des onglets en double?
    0
  2. Pen_9367 Messages postés 9 Statut Membre
     
    Bonjour,

    Voici le fichier : https://www.cjoint.com/c/JJiiYyThtXV

    Ce que je souhaite c'est d'obtenir toutes les commandes partielles ou vides (non réceptionnées) pour le technicien Jean Paul et seulement Jean paul. J'aimerais que cela me créer un onglet par commande avec le modèle type. Si je clique sur le bouton cela me créer X onglets (selon le nombre de commande partielle ou vide) avec le numéro de commande déjà inscrit en cellule C7. Il ne reste plus qu'au technicien de compléter le reste
    Si possible un bouton supprimer toute les feuilles serais un plus.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si tu cliques plusieurs fois sur le bouton, que veux-tu qu'il se passe? ne va-t-on pas créer des onglets en double?
      comment la macro saurait de quel technicien il s'agit?
      0
      1. Pen_9367 Messages postés 9 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Non pas de doublons car chaque onglets correspond à une commande (si 5 commandes partielles de jean paul et 2 commandes vide de jean paul également alors 7 onglets 1 onglets par commande). Je ne sais pas comment le macro justement peux savoir de quel technicien il s'agit en indiquant son nom ?
        En un clique j'aimerais voir apparaitre un onglet par commande partielle ou vide pour le technicien Jean paul.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Pen_9367 Messages postés 9 Statut Membre
         
        penses-tu alors que la macro devrait vérifier qu'un onglet existe avant de le créer?
        la macro pourrait lire le nom du technicien dans une cellule, à toi de choisir.
        0
  3. Pen_9367 Messages postés 9 Statut Membre
     
    Non car pour te donner plus d'info j'ai une réunion hebdo avec le technicien, je clique sur le bouton sa créer tous les onglets et je vais me servir que de certains onglets (que les commandes qu'il souhaites réceptionner, je complète le pv)après je souhaite que tous les onglets s'effacent. Une fois qu'il ma dit de réceptionner telle commande je le note dans le l'onglet liste colonne N.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comment la macro saurait de quel technicien il s'agit?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      la macro pourrait-elle, avant de créer les onglets, supprimer tous les onglets existants?
      0
  4. Pen_9367 Messages postés 9 Statut Membre
     
    Je ne sais pas comment la macro va savoir quel technicien il s'agit justement c'est aussi ma question. Peut-être en indiquant son nom et prénom dans la macro ?
    il ne faut pas supprimer tous les onglets existants je dois garder mes onglets de base.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      la macro pourrait-elle, avant de créer les onglets, supprimer tous les onglets existants, à l'exception des onglets de base?
      la macro pourrait lire dans une cellule le nom du technicien à traiter, à toi de choisir.
      0
      1. Pen_9367 Messages postés 9 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        pourquoi supprimer les onglets existants car ce sont les onglets de base?
        oui si la macro peux lire la nom du technicien dans une cellule parfait
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    une suggestion

    la macro se déclenche au double clique dans la colonne N

    Faire Alt f11 sur la feuille LISTE pour accéder à l'éditeur et mettre ce code:

    Option Explicit
    Dim Ws As Worksheet
    Dim numero As String
    Dim ligne As Long
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("N:N")) Is Nothing Then
    On Error Resume Next
    If Target = "" Then Exit Sub
    ligne = Target.Row
    numero = Range("L" & ligne).Value 'numero de commande
    creer
    End If
    End Sub
    Private Sub creer()
    'Boucle sur les feuilles du classeur.
        For Each Ws In ThisWorkbook.Worksheets
         If Ws.Name = numero Then 'même nom
         MsgBox "Une feuille existe dèjà à ce nom!", vbExclamation, "Ajout feuille"
          Application.DisplayAlerts = False 'evite message d'alerte
     Sheets(Sheets.Count).Delete 'supprime la feuille créée
    Application.DisplayAlerts = True
    Exit Sub
         End If
        Next Ws
       If numero = "" Then
     Application.DisplayAlerts = False 'evite message d'alerte
     Sheets(Sheets.Count).Delete 'supprime la feuille créée
    Application.DisplayAlerts = True
    Exit Sub
    Else
    Application.ScreenUpdating = False
    'copie feuille modèle
        Sheets("MODELE (2)").Copy After:=Sheets(Sheets.Count)
      'renommer la feuille modèle(copie) avec le nouveau nom
      Sheets(Sheets.Count).Name = numero
     Sheets(numero).Range("C7").Value = numero 'numero de commande
     Sheets(numero).Range("C6").Value = Sheets("LISTE").Range("E" & ligne).Value 'societe
     Application.ScreenUpdating = True
    End If
    End Sub
    
    
    


    ajouter cela pour le technicien

      Sheets(numero).Range("A7").Value = Sheets("LISTE").Range("D" & ligne).Value 'personne en charge
    


    voilà

    0
  7. Pen_9367 Messages postés 9 Statut Membre
     
    Bonjour,

    merci pour votre proposition mais quand je clique il ne se passe rien. J'ai du faire une mauvaise manip. Auriez-vous plus d'explications svp ?
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Voilà le lien pour télécharger:

      https://www.cjoint.com/c/JJjlYbXFjeQ

      @+ Le Pivert
      0
  8. Pen_9367 Messages postés 9 Statut Membre
     
    C'est presque ce que je souhaite. Je souhaite cliquer que sur les partielles ou vides. C'est possible ?

    Seconde question : c'est possible de faire en sorte avec un clique sur un bouton d'avoir toutes les commandes partielles ou vides ? plutôt que de devoir cliquer un par un (après cela ne me dérange pas je verrais avec mon techniciens la méthode qu'il préfère)
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      voilà avec un bouton qui parcourt toute la colonne:

      https://www.cjoint.com/c/JJjm0HvG4eQ

      et pour supprimer les feuilles créees:

      Sub supprimer()
      'Boucle sur les feuilles du classeur.
          For Each Ws In ThisWorkbook.Worksheets
           If Ws.Name <> "LISTE" And Ws.Name <> "LISTE DEROULANTE" And Ws.Name <> "MODELE (2)" Then  
        Application.DisplayAlerts = False 'evite message d'alerte
        Ws.Delete
           Application.DisplayAlerts = True
           End If
          Next Ws
      End Sub


      tu mets le curseur sur supprimer et tu appuies sur F5 du clavier

      @+ Le Pivert
      0
      1. Pen_9367 Messages postés 9 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        PARFAIT! Après avoir vue avec mon technicien votre première méthode me convient finalement ^^ je garde la second au cas ou. Cependant, est-il possible de me refaire la macro de cliquer sur la colonne N mais que pour les vides et partielles ? et je ne vous embêtes plus
        0
      2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Pen_9367 Messages postés 9 Statut Membre
         
        A mettre dans le module de la feuille LISTE

        Option Explicit
        Dim Ws As Worksheet
        Dim numero As String
        Dim ligne As Long
        Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Intersect(Target, Range("N:N")) Is Nothing Then
        On Error Resume Next
        If Target.Value = "RECEPTIONNE" Then Exit Sub
        ligne = Target.Row
        numero = Range("L" & ligne).Value 'numero de commande
        If numero = "" Then Exit Sub
        creer
        End If
        End Sub
        Private Sub creer()
        'Boucle sur les feuilles du classeur.
            For Each Ws In ThisWorkbook.Worksheets
             If Ws.Name = numero Then 'même nom
             MsgBox "Une feuille existe dèjà à ce nom!", vbExclamation, "Ajout feuille"
        Exit Sub
             End If
            Next Ws
        'copie feuille modèle
            Sheets("MODELE (2)").Copy After:=Sheets(Sheets.Count)
          'renommer la feuille modèle(copie) avec le nouveau nom
          Sheets(Sheets.Count).Name = numero
         Sheets(numero).Range("C7").Value = numero 'numero de commande
         Sheets(numero).Range("C6").Value = Sheets("LISTE").Range("E" & ligne).Value 'societe
        End Sub
        Sub supprimer()
        'Boucle sur les feuilles du classeur.
            For Each Ws In ThisWorkbook.Worksheets
             If Ws.Name <> "LISTE" And Ws.Name <> "LISTE DEROULANTE" And Ws.Name <> "MODELE (2)" Then  'même nom
          Application.DisplayAlerts = False 'evite message d'alerte
          Ws.Delete
             Application.DisplayAlerts = True
             End If
            Next Ws
        End Sub
        
        


        Voilà

        @+ Le Pivert
        0