Incrémenter un offset

Utilisateur anonyme -  
 desinfo -
Bonjour, voilà mon problème:

Je dois dans un classeur, ajouter une page et ensuite, je dois rajouter une ligne dans une autre page à un endroit précis.
Mais, je veux que cette fonction se fasse en automatique et en incrémentation.
Donc, pour faire une histoire courte, j'insère une page #2 dans mon classeur, ensuite, je vais dans la page "test" et j'insère une ligne qui sera à la suite de la ligne de la page #1, donc ligne 5 + 2. (La ligne de référence se trouve en A5).
Après, je vais créer une page #3 et je dois créer une nouvelle ligne dans ma page test, donc ligne 5 + 3.
J'incrémente comme cela jusqu'à 200 pages. Il faut que l'incrémentation des lignes soit invisible pour l'utilisateur. Je vais répéter cette formule pour plusieurs page dans mon classeur.

Je pense que je sais comment résoudre mon problème mais je ne sais pas comment le faire donc si vous avez des idées, elle seront le bienvenue.

Voici mon code en VBA:

Range("A5").select
ActiveCell.Offset(1, 0).Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAboveove

Donc voilà comment j'ai trouvé le faire: je fais un offset de ma cellule de départ ("A5") pour descendre d'une case. Il faut que j'incrémente cette offset. Donc je prend le numéro de la page et je multiplie par 1 (pour une ligne) ou par 3 mettons si j'ai trois lignes. Donc je comment je fais pour incrémenter l'offset et comment je fais pour aller chercher le numéro de ma page? Ma page est # (1) pour la première, # (2) pour la deuxième, etc. Je dois récupérer le chiffre et l'additionner au Rows de l'Offset soit le 1 de (1, 0).

Si quelqu'un peut m'aider, ce serait très apprécié car je n'y arrive pas.

J'espère que c'est compréhensible.

merci de votre temps

2 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    j'espère avoir bien compris

    Sub InsertLignes()
    Application.ScreenUpdating = False

    'on compte le nombre de feuille du classeur
    NbreFeuille = ActiveWorkbook.Sheets.Count

    'on récupère le N° de chaque feuille
    ReDim NumFeuille(NbreFeuille) As String
    For i = 1 To NbreFeuille
    If Left(Sheets(i).Name, 1) = "#" Then
    PositionDiese = InStr(1, Sheets(i).Name, "#", 1)
    NumFeuille(i) = CLng(Right(Sheets(i).Name, Len(Sheets(i).Name) - (PositionDiese)))
    End If
    Next

    Sheets("Test").Select
    'A partir de la cellule A5 et pour chaque feuille trouvée, on décale du nombre de _
    lignes égal au numéro de la feuille et on insère une nouvelle ligne
    For i = 1 To NbreFeuille
    If NumFeuille(i) <> "" Then
    Range("A5").Offset(NumFeuille(i), 0).Select
    Selection.EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End If
    Next
    End Sub
    cdlt
    0
  2. desinfo
     
    Merci pour la réponse. Mon problème est résolu.

    Un grand merci pour le temps pris.
    0