Cherche code VBA spécifique

Bonjour,

Je souhaites trouver une macro pour mon classeur Excel pour faire la chose suivante dans un tableur qui comporte les colonnes de A à BF en commençant à la ligne 7 ( important ):

Si colonne de AK à AP non vide, insérer une ligne en dessous et copier de A à AD intégralement et copier dans la nouvelle ligne les colonne AK à AP a la place de AE à AJ. ( espérant avoir été clair )

Idem si AQ à AV non vide insérer une ligne en dessous et copier de A à AD intégralement et copier dans la nouvelle ligne les colonne AQ à AV a la place de AE à AJ. ( espérant avoir été clair )

Idem si AW à BB non vide insérer une ligne en dessous et copier de A à AD intégralement et copier dans la nouvelle ligne les colonne AW à BB a la place de AE à AJ. ( espérant avoir été clair )

Le but est que tout ce qui se trouve entre Ak et BB se retrouve seulement sur la plage AE à AJ


Windows / Chrome 124.0.0.0

33 réponses

Résumé de la discussion

Une demande de macro Excel porte sur un classeur où les colonnes vont de A à BF et où, à partir de la ligne 7, trois cas doivent être traités: si AK à AP n’est pas vide, AQ à AV n’est pas vide ou AW à BB n’est pas vide, insérer une ligne en dessous et copier A à AD intégralement, puis dans la nouvelle ligne remplacer AE à AJ par les colonnes correspondantes (AK à AP, AQ à AV, ou AW à BB). Le but final est que tout ce qui se trouve entre AK et BB se retrouve uniquement sur la plage AE à AJ. Pour faciliter l’aide, des liens vers des fichiers d’exemple ont été partagés afin que les experts puissent reproduire le comportement sur des données similaires. Des échanges ont alterné entre démonstrations manuelles et propositions, et des tests de liens de partage ont été évoqués, certains devenant accessibles après vérification.

Bobot (l’IA à votre service)
  1. Bonjour,

    J’ai créé un code selon mon poste 30.

    Lorsque vous déclenchez la macro (sur clic moi) cela va mettre en place les numéros de téléphone et Fax et ensuite met en place les données de la feuille ‘Extraction à copier ici ‘ et ensuite nettoie la feuille ‘Préparation BASE NEW’ si nécessaire avant la copie des données de la feuille ‘Extraction à copier ici ‘.

    Le fichier : https://www.cjoint.com/c/NEAu7TDdhFZ

    Bon début de semaine.


    0
    1. Bonsoir le pingou,

      OUI c'est bien ça pour les numéro de téléphone et fax.

      Je testerais votre nouvelle version demain au boulot

      0
      1. Bonjour,

        Concernant numéro téléphone/Fax : Si cellule :

        est vide,                                                                     à 00 00 00 00 00

        numérique  470989934                                          à  04 70 98 99 34

        avec des points 04.70.98.99.34                           à  04 70 98 99 34

        composée 04 92 30 98 79POSTE 52882            à 04 92 30 98 79 ( seul le numéro)

        double 04 72 45 03 70 / 06 88 20 17 18             à 04 72 45 03 70 (seul le premier)

        numérique double 0472450370/0688201718  à 04 72 45 03 70 (seul le premier)

        avec ou 04 76 91 76 20 ou 23                              à 04 76 91 76 20(seul le premier)

        Est-ce correct Oui/Non…. ?

        Bon dimanche.


        0
        1. Bonjour,

          Cette version, améliorée, met en place les données de la feuille ‘Extraction à copier ici ‘ et ensuite nettoie la feuille ‘Préparation BASE NEW’ si nécessaire avant la copie des données de la feuille ‘Extraction à copier ici ‘,

          Concernant les numéros téléphone et fax, j’ai besoin d’avoir les données d’origine (sans vos modifications par vba) afin de voir ce qu’il faut mettre en place.

          Le fichier : https://www.cjoint.com/c/NEznGb3Z73Z


          0
          1. Bonjour Le Pingouin,

            effectivement je n’ai pas encore contrôler ligne par ligne, je ferai cela au bureau avec 2 écran ce sera plus simple pour voir si tout se transpose bien avec les bonnes valeurs, je vous dirais d’ici lundi ou mardi.

            en attendant tout ce décale comme je le souhaitais.

            merci à vous

            0
            1. Bonjour,

              Oui c'est bien, mais à vous de dire si le résultat obtenu est correct…. Vous ne le dite pas ......!

              J’ai regardé : Ensuite j'exécute la macro "Insertion des lignes" , votre travail auquel j'ai rajouté dedans la copie spécifique de " Extraction à copier ici " à " Préparation BASE NEW " 

              C'est un gros travail de votre part, je vais le modifier car ce n'est pas des mieux.

              Concernant les numéros téléphone et fax je vais voir ce que vous avez réalisé et y apporté la correction nécessaire... mais pas avant demain soir.


              0
              1. Grand merci à vous Le Pingou, c'est parfait, maintenant il traite toute les lignes en une seule fois.

                Merci

                0
                1. Bonjour,

                  Je n’ai pas le temps pour lire/traiter votre message, cependant j’ai modifié mon code à la suite de petites erreurs que j’ai découvertes en testant par ‘Pas à pas’.

                  Je vous prie de bien contrôler que cette fois les valeurs sont correctement traités selon vos attentes.

                  La suite après votre retour de nouvelles

                  Le fichier : https://www.cjoint.com/c/NEyqUT0xYrZ

                  Bonne fin de semaine.


                  0
                  1. Re,

                    J'ai fais du ménage dans mon classeur Excel et conserver se que j'avais besoin.

                    J'ai pu mettre en macro pour le changement des numéros de téléphone et de fax au bon format.

                    J'ai pu faire la recopie de " Extraction à copier ici " sur " Préparation BASE NEW "  en prenant en compte seulement les colonnes dont j'ai besoin.

                    J'ai la macro "Mise en forme des cellules" qui fonctionne " ( je dois encore améliorer  car je n'arrive pas à faire afficher dans les colonnes " téléphone et Fax" les 14 premiers caractères en partant de gauche lorsque une cellule est renseigné sous la forme ex : "04 77 01 01 59 / 0609508146" afin de la mettre sous la forme "04 77 01 01 59" )

                    Ci joint mon fichier :

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

                    Pour l'utilisation, c'est simple, depuis un logiciel interne à ma société je récupère mon extraction que je colle dans " Extraction à copier ici " à partir de la cellule A7.

                    Puis, j'exécute la macro "Mise en forme des cellules"

                    Ensuite j'exécute la macro "Insertion des lignes" , votre travail auquel j'ai rajouté dedans la copie spécifique de " Extraction à copier ici " à " Préparation BASE NEW " 

                    Ensuite  je pourrais sélectionner toute ma feuille " Préparation BASE NEW "  qui sera prête pour pouvoir l'insérer sur un portail web ( cela sert à faire les déclarations des interventions )

                    0
                    1. Bonjour,

                      vous dites : De mon côté j'ai un peu avancer et j'ai réussi à traiter :

                      merci de me faire savoir ce que vous avez fait...!

                      La suite en dépend...!


                      0
                      1. Re,

                        Lorsque mon tableau contient un nombre de ligne > à 100 lignes, la macro traite les données jusqu'à la ligne 101

                        Ci dessous exemple avec un tableau avec un nombre de ligne > à 100 :

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

                        De mon côté j'ai un peu avancer et j'ai réussi à traiter :

                        """""Ensuite il faudrait que l'onglet " extraction à copier ici " se recopie dans l'onglet " préparation Base New "( attention certaine colonne sont supprimer ), l'onglet " A copier dans BASE NEW " ( attention certaine colonne sont supprimer ) et dans l'onglet " Transition don't USE"""""

                        0
                        1. Re

                          Lorsque mon tableau contient plusieurs lignes, la macro ne traite plus les données à partir de la ligne 102.

                          Ci dessous exemple d'un tableau avec + de 100 lignes :

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

                          De mon côté j'ai trouvé comment faire pour :

                          """"Ensuite il faudrait que l'onglet " extraction à copier ici " se recopie dans l'onglet " préparation Base New "( attention certaine colonne sont supprimer ), l'onglet " A copier dans BASE NEW " ( attention certaine colonne sont supprimer ) et dans l'onglet " Transition don't USE""""""

                          0
                          1. Bonjour,

                            Dans un premier temps j’ai créé une plage avec 64 lignes et j’ai lancer la macro et j’obtiens, sans cliquer sur le bouton de la macro plusieurs fois, une nouvelle plage avec 92 lignes.

                            Voir le fichier : https://www.cjoint.com/c/NEyi7MuG8XZ

                            Dans votre cas pouvez-vous expliquer exactement ce que vous avez réalisé… !


                            0
                            1. Bonjour le Pingou,

                              Tout d'abord je vous remercie de votre travail.

                              J'ai constaté que la Macro ne traite pas toute les lignes en une seule fois, je suis obligé de cliquer sur le bouton de la macro plusieurs fois afin que tout le tableau soit traiter. ( généralement j'ai environ 200 lignes ) . Je crois qu'il faudrait faire une "boucle" mais je ne maîtrise pas cela !

                              Ensuite il faudrait que l'onglet " extraction à copier ici " se recopie dans l'onglet " préparation Base New "( attention certaine colonne sont supprimer ), l'onglet " A copier dans BASE NEW " ( attention certaine colonne sont supprimer ) et dans l'onglet " Transition don't USE"

                              Ensuite est -il possible de modifier via la macro la colonne I ( Telephone ) et la colonne K ( FAX ) de la façon suivante :Si

                              Si cellule est vide, mettre 00 00 00 00 00

                              Si cellule contient un numéro sous forme 470989934 la mettre sous forme 04 70 98 99 34

                              Si cellule sous forme 04.70.98.99.34 la mettre sous forme 04 70 98 99 34

                              Si cellule sous forme 04 92 30 98 79POSTE 52882 la mettre sous forme 04 92 30 98 79

                              Si cellule sous forme 04 72 45 03 70 / 06 88 20 17 18 la mettre sous forme 04 72 45 03 70

                              Et si cellule sous forme 0472450370/0688201718 la mettre sous forme 04 72 45 03 70

                              Merci par avance.

                              0
                              1. Bonjour,

                                J’ai préparé le code pour la feuille ‘Extraction à copier ici ‘, je vous contrôler si c’est conforme à vos besoins. Déclencher la macro via [Clic moi.]

                                Je finaliserai selon votre retour.

                                Le fichier : https://www.cjoint.com/c/NExupWUJP1Z


                                0
                                1. Oui c'est bien ce que je recherche a faire via une macro

                                  0
                                  1. Bonjour,

                                    A force de comparaison je déduis ceci :

                                    Par exemple sur la feuille ‘Extraction à copier ici’ pour la ligne 9 les cellules AK9 :AP9 ou AQ9 :AV9 ou AW9 :BB9 ne sont pas vide donc on insère une ligne au-dessous en dupliquant les valeurs A9 :AD9 et les valeurs AK9 :AP9 ou AQ9 :AV9 ou AW9 :BB9  dans la plage AE10 :AJ10

                                    Les feuilles ‘Préparation" BASE NEW " et  ‘A copier dans "BASE NEW" sont traitées de la même manière.

                                    Est-ce correct ?


                                    0
                                    • 1
                                    • 2