Incrémenter un offset

Fermé
infodes Messages postés 50 Date d'inscription mardi 26 novembre 2013 Statut Membre Dernière intervention 21 décembre 2023 - 5 déc. 2013 à 15:59
 desinfo - 9 déc. 2013 à 17:50
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
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
6 déc. 2013 à 03:08
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
Merci pour la réponse. Mon problème est résolu.

Un grand merci pour le temps pris.
0