MACRO

Fermé
SARSTRET Messages postés 10 Date d'inscription samedi 25 mars 2017 Statut Membre Dernière intervention 8 août 2017 - 8 août 2017 à 22:12
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 10 août 2017 à 09:52
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
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700
Modifié le 8 août 2017 à 22:49
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
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 700
10 août 2017 à 09:52
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