Macro ajout de ligne en fonction de différentes cellules

Résolu

Bonjour,

Je souhaiterai effectuer des actions automatiques sur un second tableau en fonction de ce que je remplis dans le premier tableau. 

 Pour faire simple, je remplis manuellement les valeurs dans les cases blanches et je possède un menu déroulant sur la case de droite. Je souhaiterai quand je met la valeur "Environnement technique" qu'une ligne soit créée sur un autre tableau 

Voici l'autre tableau :

N'étant pas du tout un pro en macro, quelqu'un serait-il en capacité de me rendre ce service s'il vous plaît?

En vous remerciant.

20 réponses

  1. Bonjour denis

    Pas forcément besoin de macro une formule peut peut-être suffire

    Pour avoir une aide il faut fournir un exemple de ton fichier et pas une image

    Exemple à poster sur cjoint.com, faire créer un lien, le copier et revenir le coller ici

    Cdlmnt

    Via


    1
    1. Bonjour, 

      C'est difficile de répondre au question sans l'exemple.

      Cordialement

      Will

      1
      1. Bonjour Messieurs,

        En effet, sans exemple ce n'est pas pratique...

        Le voici : Document Exemple

        En vous remerciant pour vos retours.

        Denis

        0
        1. https://www.cjoint.com/c/LJfhgmJcAjx

          0
          1. Re,

            Qu'en est-il des autres lignes (Périmétriques ....) doivent elles se reporter aussi ?


            0
            1. Re,

              Tout d'abord un grand merci de prendre du temps pour cela ;)

              Concernant le tableau, en effet, oui elles doivent se reporter aussi, comme toutes les valeurs dans le menu déroulant de la colonne E.

              Quand je rentre cette valeur en colonne E, je souhaiterai que la ligne se crée automatiquement dans le tableau du second onglet. Est-ce plus clair?

              0
              1. Oh mon Dieu! Cela fonctionne en plus!

                Merci beaucoup à toi. Petite question : Si je veux copier cette macro dans un autre fichier comment puis-je faire cela s'il te plaît?

                0
                1. Alt + F11 pour ouvrir l'éditeur VBA

                  Aller dans Module 2 - Sélectionner et copier toutes les lignes de la macro , ouvrir l'éditeur VBA de l'autre fichier, coller la macro dans un module


                  0
                  1. J'ai réussi à copier le module dans mon nouveau fichier.

                    J'ai fait les changements dans le module pour que cela corresponde à mon nouveau fichier (notamment les noms des onglets) mais il m'affiche une fenêtre que vous pourrez voir en dessous (Atteindre). Je me retrouve bloqué par manque de connaissances... Merci pour votre retour. 

                    Denis

                    0
                2. Super. C'est parfait. Quelle efficacité!

                  Peut-on vous recommander sur le site?

                  0
                  1. Re moi encore....
                     

                    Quand j'ai tenté de le copier dans un nouveau fichier... En modifiant les noms dans le module correspondant aux nouveaux noms dans le nouveau fichier, quand j'appuie sur CTRL+T il m'affiche une fenêtre :

                    Que dois-je faire s'il vous plaît?

                    0
                    1. Le raccourci n'est pas associé à la macro

                      Aller dans le Ruban à Développeur puis Macro et faire Exécuter la macro

                      Pour mettre un raccourci clavier dans Macro au lieu d'Exécuter aller dans Options


                      0
                      1. Alors j'ai dû faire une boulette. Je vous renvoie ça de suite:

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

                        Je pense que vous comprendrez mieux que moi. 

                        Merci beaucoup.

                        0
                        1. 1) Les plages du nouveau fichier ne correspondaient pas il faut modifier ainsi la amcro

                          Sub transposition()
                          g = 9
                          For y = 5 To 23
                          nom = Sheets("Zones lecteurs").Range("E" & y)
                          
                          If WorksheetFunction.CountIf(Sheets("Orange LAGNY NOIMM 779351").Range("E:E"), nom) > 0 Then g = g + 1
                          MsgBox nom
                          For l = 9 To 50
                          If Sheets("Orange LAGNY NOIMM 779351").Range("F" & l) = nom Then
                          g = g + 1
                          Sheets("Internes et Externes SI").Range("A" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("B" & l)
                          Sheets("Internes et Externes SI").Range("B" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("C" & l)
                          Sheets("Internes et Externes SI").Range("C" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("D" & l)
                          Sheets("Internes et Externes SI").Range("E" & g) = nom
                          End If
                          Next
                          Next
                          
                          
                          End Sub

                          2) Les colonnes de la feuille où transposer les données ne correspondent en rien à celle de la feuille source !!!


                          0
                          1. D'accord, au temps pour moi...

                            Donc je pense qu'il y a un soucis. Quand j'exécute la macro, la ligne 45 (onglet "Orange LAGNY NOIMM 779351") ne se crée pas dans le second onglet... Est-ce bien ce que vous aviez compris en créant la macro ou je me suis exprimé comme un néophyte qui se respecte?

                            0
                            1.  Pourrai-je vous faire un partage d'écran en direct histoire de vous expliquer concrètement mon soucis s'il vous plaît?

                              En vous remerciant.

                              0
                              1. Bonjour

                                Pas de partage d'écran possible mais je viens de remarquer une chose, des libellés ne sont pas identiques,dans la feuille source et la liste de la feuille Zones lecteurs par ex pour la ligne 45 c'est Périphérie accès piétons alors que dans la liste c'est Périphérique accès piétons

                                Commence par mettre en conformité les libellés et tout devrait fonctionner ensuite

                                Cdlmnt

                                Via


                                0
                                1. Sub transposition()
                                  g = 9
                                  For y = 5 To 21
                                  nom = Sheets("Zones lecteurs").Range("E" & y)

                                  If WorksheetFunction.CountIf(Sheets("Orange LAGNY NOIMM 779351").Range("E:E"), nom) > 0 Then g = g + 1
                                  MsgBox nom
                                  For l = 9 To 50
                                  If Sheets("Orange LAGNY NOIMM 779351").Range("F" & l) = nom Then
                                  g = g + 1
                                  Sheets("Internes et Externes SI").Range("A" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("B" & l)
                                  Sheets("Internes et Externes SI").Range("B" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("C" & l)
                                  Sheets("Internes et Externes SI").Range("C" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("D" & l)
                                  Sheets("Internes et Externes SI").Range("E" & g) = nom
                                  End If
                                  Next
                                  Next


                                  End Sub

                                  Voici la macro que vous avez fait pour ce tableau. Je me pose cependant quelques questions : Après l'exécution j'ai un message qui apparaît pour chaque valeur, est-il possible de les enlever s'il vous plaît?  (MsgBox?)

                                  Quand j'exécute la macro, cela ne donne pas du tout le résultat attendu... Certainement une mauvaise explication de ma part. Donc je vais en parler en nom de case pour tenter d'être plus clair avec vous : 

                                  De l'onglet Orange LAGNY NOIMM 779351 vers l'onglet Internes et Externes SI:

                                  Colonne E vers D

                                  Colonne F vers B

                                  Colonne D vers C

                                  Cela dit je peux avoir plusieurs "accès" en périphérie accès piétons par exemple. Dans le cas où j'en aurai plusieurs je souhaiterai que la ligne vienne s'insérer automatiquement dans le tableau de l'onglet Internes et Externes SI. 

                                  Je pense vous avoir tout donné comme informations. 

                                  P.S : J'ai rectifié tous les libellés et cela ne fonctionne toujours pas.

                                  En vous remerciant pour votre temps.

                                  Cdlmnt

                                  Denis

                                  0
                                  1. Re

                                    1) oui enlever la ligne avec msgbox qui n'était là que pour contrôle

                                    2) Rectifier les lettres des colonnes dans les lignes de la macros faisant le transfert

                                    Ex : Sheets("Internes et Externes SI").Range("A" & g) = Sheets("Orange LAGNY NOIMM 779351").Range("B" & l)

                                    transfère pour l'instant de B vers A , à changer donc par E et D etc

                                    Si malgré toutes tes modifications cela ne fonctionne pas encore correctement me renvoyer ton fichier corrigé


                                    0