MACRO

SARSTRET Messages postés 12 Statut Membre -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j' ai un fichier de 500 linges ou se trouvent des inscriptions qui se trouvent dans le premier classeur, que je dois copier entièrement dans le deuxième classeur afin de pouvoir faire des modifications dans la présentation de ce fichier afin d' intercaler quatre lignes sans aucune inscription
Quelle formule faut il employer afin de pouvoir l'intégrer dans une macro que je vais créer et nommé insertion de ligne.
une fois la macro crée comment faut il faire pour l'intégrer à l'ensemble du fichier qui se trouve dans le deuxième classeur uniquement.
Je n'ai jamais crée un macro, et je voudrais essayer car insérer le lignes manuellement cela demande beaucoup de travail.
Si l'on peut me donner la solution cela serait parfait.
Je vous remercie déjà pour votre aide.
SARSTRET

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Si tu insères cette macro dans un module de ton deuxième classeur, tu vas obtenir la copie de ton classeur actuel avec 4 lignes vierges intercalées.
    Option Explicit
    Public Sub insertion_de_ligne()
    Dim lig As Long
        With Workbooks("Classeur1.xlsx").ActiveSheet
            For lig = 1 To .UsedRange.Rows.Count
                .Rows(lig).Copy Destination:=ThisWorkbook.ActiveSheet.Rows(IIf(lig > 1, (lig - 1) * 5 + 1, 1))
            Next lig
        End With
    End Sub
    

    Il te suffit d'ouvrir le "Classeur1.xlsx" dont tu adaptes le nom à ton classeur dans la même session et de lancer la macro.
     Toujours zen
    La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.  Antoine de Saint-Exupéry
    0
  2. OBSO&&OBSO
     
    Bonjour
    Merci pour votre réponse
    Mais je n’arrive pas ?
    1.- j’ai commencé par ceci
    J’ai repris une partie du tableau qui comporte uniquement 21 lignes y compris l’entête des noms , des réf, des dénominations des diverses colonnes
    Dans ces colonnes il y a des réf des dénominations et des prix et beaucoup d’autres renseignements
    Je me suis positionné sur le classeur 2 que j’ai intitulé prix spécifiques
    Je me suis positionné sur le classeur 2 pour créer la macro
    1.- sur développeur
    2.-enregistré une macro
    3 Nom de la macro : MACRO1
    4.-Enregistré la macro : dans ce classeur
    5.-DESCRIPTION : insérer 4 lignes
    SUR SECURITE DES MACROS :
    Paramètres des macros
    J’ ai laissé : ce qui était coché soit :
    désacivé toutes les macros avec modications
    après visual code
    la j’ai collé ce que vous m’aviez communiqué
    je retourne sur le fichier excell
    puis j’ai cliqué sur macro
    puis le programmz mentionn = l’indice n’ appartient pas à la sélection
    a l’extrème gauche on voit
    vbp projet avec les indication
    feuille 1 = global
    et feuille 2 = prix spécifiques
    et c’est bien sur la feuille 2 que l’on voit la règle que j’ai collé
    même si je renomme classeur 1 et classeur 2 cela ne change rien
    je ne sais pas d’où provient l’ erreur ???

    Par contre je ne comprends pas la dernière phrase
    dont tu adaptes le nom à ton classeur dans la même session et de lancer la macro.
    Que voulez- vous dire adaptes le nom à ton classeur dans la même cession ????
    Si vous pouvez me dire d’où vient mon erreur.
    par contre je vous ai dit qu'il fallait intercallé 4 lignes mais c'est seulement 3 linges

    Déjà merci pour l'assistance
    SARSTRET
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      tu adaptes le nom à ton classeur
      Dans cette ligne, il faut mettre le nom de ton classeur, je l'ai appelé "Classeur1.xlsx", si tu l'as appelé "mon_exemple.xls", c'est ce nom qu'il faut mettre
      With Workbooks("Classeur1.xlsx").ActiveSheet

      dans la même session
      Il faut que dans l'éditeur de macro tu vois tes 2 classeurs pour que cela fonctionne.

      il fallait intercallé 4 lignes mais c'est seulement 3 linges
      tu remplaces le 5 par 4 et cela devrait être correct.
      .Rows(lig).Copy Destination:=ThisWorkbook.ActiveSheet.Rows(IIf(lig > 1, (lig - 1) * 4 + 1, 1))
      0