Augmenter la valeur d'une ligne de +1

Bonjour le forum

J'ai une macro qui va chercher une ligne en "feuil1" et va l'inscrire en feuil"annoncé"

Les lignes sont C12727:V12727 et C12726:V12726 et je voudrais quand la macro est terminé ajouter +1 a ces valeurs,

c'est à dire quelles deviennent C12728:V12728 et C12727:V12727.

Comment faut-il écrire cela a la fin de la macro

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("Feuil1").Select

Range("C12727:V12727").Select

Selection.Copy

Sheets("annoncé").Select

Range("BG93").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("Feuil1").Select

Range("C12726:V12726").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("annoncé").Select

Range("BG114").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

False, Transpose:=True

'l'écrire içi'

Range("AR92").Select

End Sub

merci

salut

je comprends pas bien ce que tu veux faire

tu selectionnes un range tu le copies/colles dans une autre feuille

et ensuite je comprends pas tu veux augmenter le ligne de 1 pour en faire quoi?

Bonsoir,

Je ne vois pas trop non plus l'intérêt de la manoeuvre... En tout cas, il suffit d'insérer une ligne avant celles qu'on veut faire reculer d'un rang...

Par contre il serait bon d'améliorer ton code en supprimant tous les Select, les commandes de déplacement, CutCopyMode..., ainsi que les arguments non utilisés des méthodes, soit tout ce que l'enregistreur met inutilement... Ton code se réduirait d'au moins les 2/3, gagnerait en clarté, et en efficacité, et si en plus tu l'indentes, ce sera parfait !

Les balises Code seraient églament plus indiquées pour citer du code dans un post...

Cordialement.

Bonjour ciocciu, MFerrand, le forum

Dans la feuil "annoncé" je n'est besoin que de l'avant derniere et l'avant avant derniere ligne de la feuil1, c'est a dire la la n° 12727 et 12726 mais quand je vais rajouter un autre tirage l'avant derniere ligne sera la n°12728 et l'avant avant derniere sera la 12727.

Chaque fois que je rajoute un tirage elles augmenteront de +1.

Actuellement je le fais manuellement par copier/coller et je voulais donc savoir s'il est possible de faire modifier de +1 le Range("C..:V..") dans la macro a la fin de son éxécution de façon qu'a la prochaine éxécution quand je clique sur la macro c'est valeurs ont changé.

J'ai voulu supprimer les Select mais j'ai un message "erreur de compilation utilisation incorrecte de la propriété.

merci

  Sheets("Feuil1").Select
    Range("C12727:V12727").Select
    Selection.Copy
    Sheets("annoncé").Select
    Range("BG93").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    Sheets("Feuil1").Select
    Range("C12726:V12726").Select
    Selection.Copy
    Sheets("annoncé").Select
    Range("BG114").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

    Range("AR92").Select
End Sub

Bonsoir,

J'ai toujours pas bien compris ton histoire de tirage... En attendant, je peux t'illustrer rapidement la suppression des Select...

Tu écris :

  Sheets("Feuil1").Select
    Range("C12727:V12727").Select
    Selection.Copy

Tu réécris simplement :

    Sheets("Feuil1").Range("C12727:V12727").Copy

2 Select de moins = 2 opérations parasites gagnées !

Tu écris ensuite :

    Sheets("annoncé").Select
    Range("BG93").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

Tu réécris ainsi :

    Sheets("annoncé").Range("BG93").PasteSpecial xlPasteAll, , , True

Encore 2 Select de moins = 2...

En plus, on ignore 2 paramètres à leur valeur par défaut qui n'ont pas besoin d'être définis à la valeur qu'ils ont déjà ! Du temps supplémentaire gagné.

Et en passant les arguments par position, leur nom est inutile (ça c'est juste un gain en écriture...)

Là on s'est contenté d'éliminer ce qui était inutile, qui apporte toutefois un gain, car sélectionner est une opération qui occupe VBA (il ne fait pas autre chose pendant qu'il sélectionne !)

Mais à partir de là, on peut optimiser un peu plus, en regroupant les opérations sur la Feuil1 dans un bloc With... End With, ce n'est pas qu'une amélioration d'écriture car VBA met la référence à l'objet en mémoire, c'est donc plus rapide.

On ne peut pas faire la même chose pour les deux feuilles en même temps, mais on peut affecter la référence de l'autre à une variable Worksheet, qui permettra également à VBA d'y accéder plus rapidement.

    Set wsC = Worksheets("annoncé")
    With Worksheets("Feuil1")
        .Range("C12727:V12727").Copy
        wsC.Range("BG93").PasteSpecial xlPasteAll, , , True
        .Range("C12726:V12726").Copy
        wsC.Range("BG114").PasteSpecial xlPasteAll, , , True
    End With

A ce stade, tu as obtenu un code, raccourci et relativement optimisé, donc plus rapide à l'exécution.

[Je dis relativement, car cela reste limité à un fragment de code, s'il est possible d'optimiser plus, cela se passe alors sur l'ensemble du programme...]

Cordialement.

Bonjour MFerrand, le forum

merci pour les explications pour le code de la macro, je vais pouvoir modifier aussi les autres macros car j'en ai pas mal.

Pour la macro quand je l'execute pour la premiere fois les valeurs du Range sont "C12727:V12727 et C12726:V12726",

mais a la deuxieme éxécution j'aurais voulu que ces valeurs soient augmentées de +1 c'est à dire "C12728:V12728 et C12727:V12727",

si cela est possible de modifier ces valeurs dans la macro.

merci

Rechercher des sujets similaires à "augmenter valeur ligne"