Copier des cellules (formule) dans colonne vide

Copier des cellules (formule) dans colonne vide Macro - copier des données dans première colonne vide (Résolu) » Forum - Excel Copier des cellules vers des colonnes variabl » Forum - Bureautique Comment copier certaines cellules d'une colonne » Forum - Excel VBA .Copier valeur cellule excel sans formule (Résolu) » Forum - Excel Comment copier dans la premiere colonne vide (Résolu) » Forum - Logiciels

Bonjour,
Novice en VBA et toute nouvelle sur le forum, je souhaite déplacer et copier une plage de cellules (formules) dans la colonne vide à droite et sur les mêmes lignes. Ci-dessous le code créé mais avez-vous une solution pour ne pas répéter toutes les lignes.
Merci à tous pour votre aide.... A bientôt..

Range("F8").End(xlToRight).Offset(0, 1).Formula = Range("F8").End(xlToRight).Formula
Range("F10").End(xlToRight).Offset(0, 1).Formula = Range("F10").End(xlToRight).Formula
Range("F12").End(xlToRight).Offset(0, 1).Formula = Range("F12").End(xlToRight).Formula
Range("F13").End(xlToRight).Offset(0, 1).Formula = Range("F13").End(xlToRight).Formula
Range("F15").End(xlToRight).Offset(0, 1).Formula = Range("F15").End(xlToRight).Formula
Range("F17").End(xlToRight).Offset(0, 1).Formula = Range("F17").End(xlToRight).Formula

'ET ++++++++ POUR ARRIVER A LA LIGNE 1174

Forum

Copier des cellules (formule) dans colonne vide Macro - copier des données dans première colonne vide (Résolu) » Forum - Excel Copier des cellules vers des colonnes variabl » Forum - Bureautique Comment copier certaines cellules d'une colonne » Forum - Excel VBA .Copier valeur cellule excel sans formule (Résolu) » Forum - Excel Comment copier dans la premiere colonne vide (Résolu) » Forum - Logiciels

Web: www.shapebootstrap.net

5 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Essaies :

Option Explicit Sub test() Dim L As Long   With ActiveSheet     For L = 8 To 1174 Step 2       .Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = .Cells(L, "F").End(xlToRight).Formula     Next L   End With End Sub


Reply
réponses:
  • anana49

    Bonjour Patrice,
    Ton code fonctionne et pour ça MERCI !
    Mais comme je maitrise pas trop les boucles, j'ai besoin encore un peu de ton aide... ci-dessous le code adapté mais c'est très long à sortir, peux-tu l'optimiser ou il n'y a pas de solution ?
    Merci encore pour ton aide

    Sub CopierFormules()  Dim L As Long Sheets("Volumes").Select   With ActiveSheet     For L = 8 To 293 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L     For L = 314 To 316 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 344 To 449 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 463 To 465 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 491 To 594 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 608 To 610 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 852 To 955 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 969 To 971 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L      For L = 1159 To 1174 'Step 2       Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = Cells(L, "F").End(xlToRight).Formula     Next L        End With End Sub 

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Tu as mal adapté mon code !

1) Dans ton code les lignes suivantes sont inutiles :

  With ActiveSheet  '...    End With
car tu n'y fait jamais référence !!!

Dans mon code j'ai utilisé With pour faire référence à une feuille, et ensuite toutes cellules désignées faisait référence à cette feuille :
      .Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = .Cells(L, "F").End(xlToRight).Formula 
grâce au point situé devant Cells(...
En effet, dans .Cells(... le point sert à rattacher cet objet (Cells) à celui désigné par le With (ActiveSheet).
Sans le With, il aurait fallu répéter ActiveSheet.Cells(... à chaque fois pour avoir l'équivalent.

J'ai fait référence à la feuille active car tu n'avais pas précisé sur quelle feuille tu travaillais et car j'évite, dans un module standard, d'utiliser les références implicites, c'est-à-dire celles qui ne sont pas désignées explicitement comme par exemple un Cells(... tout seul qui ne fait pas référence à une feuille particulière.

Dans ton code tu as omis ce point et donc tes Cells(... ne font pas référence à l'objet désigné dans le With (i.e. ActiveSheet) mais à l'objet actif. Le hasard veux que ce soit le même et donc ton code fonctionne.

2) Dans les macro VBA, il faut absolument éviter d'employer .Select, .Activate. Il est inutile d'activer un objet (feuille, cellule, ...) pour travailler dessus, c'est même déconseillé. Au lieu d'écrire :
Sheets("Volumes").Select   With ActiveSheet 
Il vaut mieux écrire simplement :
  With Sheets("Volumes") 


Pour simplifier ton code, on peut utiliser Select .. Case, par exemple :
Sub CopierFormules() Dim L As Long   With Sheets("Volumes")     For L = 8 To 1174       Select Case L         Case 8 To 293, 314 To 316, 344 To 349, 463 To 465, 491 To 594, 608 To 610, 852 To 955, _              969 To 971, 1159 To 1174           .Cells(L, "F").End(xlToRight).Offset(0, 1).Formula = .Cells(L, "F").End(xlToRight).Formula        End Select     Next L   End With End Sub

Ce code est plus dense, simple à lire, et plus rapide

Reply
réponses:
  • anana49

    Bonjour Patrice,
    Je te remercie beaucoup, le code fonctionne mais je rencontre un autre problème. Dans les formules copiées, j'ai la fonction recherchev() qui se décale parfaitement, par contre ce sont les fonctions totaux qui ne se décalent pas correctement ex: =AM9+AN8 devrait se décaler pour donner AN9+AO8
    Peux-tu m'expliquer?

  • Patrice33740

    Il est difficile d'expliquer quoi que ce soit, avec aussi peu d'informations !

    Ce code copie, pour chaque ligne, la formule située dans la dernière colonne utilisée vers la colonne suivante.
    Il me semble anormal que ta fonction recherchev() se décale (sans la formule il faudrait être devin) car ce code copie exactement la même formule donc =AM9+AN8 reste =AM9+AN8.

    Pour que les formules se "décalent" automatiquement, il faut utiliser .FormulaR1C1 à la place des deux .Formula

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed