Duplication de la ligne avec incrémentation

Bonjour ,

Je suis NOUVELLE SUR LE Forum et je suis débutante en VBA et j'ai besoin de votre aide pour modifier ma macro s'il vous plait

mon probléme :

Ma macro fonctionne avec un Menu contextuel .Donc je voudrais quand utilisateur fini a remplir toute une ligne, après quand il clique sur le souris ou s'nommé "duplication de la ligne " ; un message Box montre n° de trajet de début ,après un autre message Box ,n°de trajet de fin .

Don c a partir de n° trajet de début jusqu’au numéro de trajet de fin , il incrémente avec un +1 pour le dernière n° de trajet avec recopie de toute la ligne .

'exemple :

N° trajet de debut :580

N) trajet de fin: 587

donc je vais avoir 581-582-583-584-585-856-587 avec coipe de tout les données de la ligne 1 .

' code VBA

Sub dupliquerlignes()

Dim lignes As Integer

Dim debut As Integer

DEBUT = InputBox("N DE DEBUT ")

FIN+ InputBox("N DE FIN ")

For debut To FIN

With ActiveCell.EntireRow

.Offset(debut, 0).Insert Shift:=xlDown

.Copy Destination:=.Offset(debut, 0)

DEBUT+DEBUT+1

End With

Next debut

End Sub

' Menu contextuel

Private Sub Workbook_Open()

Call Creer_Menu_Contextuel_2

End Sub

Sub Creer_Menu_Contextuel_2()

'réinitialize la sourie comme à l'origine

Application.CommandBars("Cell").Reset

'Crée une commande dans le menu

With Application.CommandBars("Cell").Controls.Add(msoControlButton)

.Caption = "Duplication de la ligne" 'le nom de la commande

.BeginGroup = True 'ligne facultative si elle est précisée alors

.OnAction = "dupliquerlignes" 'appel de la macro

End With

End Sub

Sub reset_menudroit()

CommandBars("Cell").Reset

End Sub

Dans l'attente de vos répense .Je vous remercie d'avance .

bonjour,

je ne sais pas si tu connais , tu peux écrire : MsgBox Trajet 1 & vbcrlf & Trajet2

@+JP

Merci pour votre retour rapide

j'ai essayé mais ca marche pas en fait ma macro ; elle sort les messages Box mais ,il y' pas incrémentation et la duplication

Bonjour,

quand tu postes ton code , dans le menu , utilises la case </> ,

pour ton code , avant de trouver le problème , il faut mettre de l'ordre dans ton code

tu déclares : Dim debut As Integer et tu as : DEBUT = InputBox("N DE DEBUT ")

tu as donc 2 variables différentes

debut qui est integer

DEBUT qui est ? string peut être ?

ta boucle utilise debut : For debut To FIN , mais à ce moment là , debut ne vaut rien (peut être même pas 0)

et après tu as : DEBUT+DEBUT+1 ? tu voulais dire : DEBUT=DEBUT+1 ?

pour FIN : FIN+ InputBox("N DE FIN ") ? tu voulais dire : FIN = InputBox("N DE FIN ") ?

@+JP

re,

pour une boucle ,

For LigneNum = DEBUT to FIN

'... ICI LigneNum vaut de DEBUT à FIN

'... pas besoin de DEBUT = DEBUT +1

Next LigneNum

@+JP

Bonjour,

essais ce code :

Public Sub Action()
    DEBUT = InputBox("N DE DEBUT ")
    FIN = InputBox("N DE FIN ")
    For LigneNum = DEBUT To FIN
        With ActiveCell.EntireRow
            .Offset(LigneNum, 0).Insert Shift:=xlDown
            .Copy Destination:=.Offset(LigneNum, 0)
        End With
    Next LigneNum
End Sub

@+JP

Bonjour ,

Merci pour ton aide.

on progresse , ca approche de ce que je voudrai faire , sauf il incremente pas avec +1

EXEMPLE :

debut 12

fin 17

Ce que je souahiterais faire

12

13

14

15

16

17

Merci d'avance

Bonjour,

je ne suis pas sur d'avoir tout compris

Private Sub Action()
    DEBUT = InputBox("N DE DEBUT ")
    FIN = InputBox("N DE FIN ")
    With ActiveCell.EntireRow
        For LigneNum = DEBUT To FIN
            .Offset(LigneNum - 1, 0).Insert Shift:=xlDown
            .Copy Destination:=.Offset(LigneNum - 1, 0)
            Cells(LigneNum, 1).Value = "(" & LigneNum & ") " & Cells(LigneNum, 1).Value
        Next LigneNum
    End With
End Sub

le résultat

capture1

@+JP

Bonjour,

Je vous remercie pour votre aide. on progresse . je vous explique mieux dans un fichier excel .merci d'avance

23dupliquer.xlsx (10.99 Ko)

ue MIeux dans un fichier excel .merci d'avance .

Bonjour,

voila , je pense que cette fois c'est ok

Private Sub Action()
    'numéro de la colonne qui contient les numéros , B = 2
    ColonNum = 2
    '-----
    'intervale
    'DEBUT = InputBox("N DE DEBUT ")
    'FIN = InputBox("N DE FIN ")
    'la ligne sélectionnée est le DEBUT !!
    'le nombre de ligne suivante est la FIN !!
    Msg = "Indiquez le Nombre de Lignes ..." & _
    vbCrLf & "La ligne sélectionnée est incluse dans ce Nombre ..." & _
    vbCrLf & _
    vbCrLf & "Le nombre 3 ," & _
    vbCrLf & "correspond à la ligne sélectionnée + 2 autres lignes ."
    NBLigne = InputBox(Msg)
    '-----
    With ActiveCell.EntireRow
        TrajetNum = .Cells(1, 2).Value
        For LigneNum = 2 To NBLigne
            TrajetNum = TrajetNum + 1
            .Offset(LigneNum, 0).Insert Shift:=xlDown
            .Copy Destination:=.Offset(LigneNum - 1, 0)
            .Cells(LigneNum, 2).Value = TrajetNum
        Next LigneNum
    End With
End Sub

Fichier DUPLIQUER_JP-v3

@+JP

Bonjour,

Merci pour votre aide .

Ca fonctionne trés bien .

Merci

Rechercher des sujets similaires à "duplication ligne incrementation"