Macro copier coller, ligne variable, conserver formule

Andreleca

XLDnaute Nouveau
Bonjour à vous tous

Avec votre aide j'ai réussi à bâtir un outil facilitant mon travail, mais j'ai encore un petit souci. Voir fichier joint. Je suis capable de
- copier deux cellules (E4 et F4) sur les colonnes E5 jusqu’au cellule vide colonne C
- de convertir mes cellules en format valeur (dans le but d'allèger le fichier) par la suite.
Par contre j'aimerais bien conserver les formules en E4 et F4, mais avec la formule ci dessous tout est convertie en valeur (incluant E4 et F4)
Range("E4:f4").Select
Selection.AutoFill Destination:=Range("E5:f" & Range("C65535").End(xlUp).Row), Type:=xlFillDefault
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

Merci de votre aide
 

Pièces jointes

  • Test.xlsm
    16.2 KB · Affichages: 54
  • Test.xlsm
    16.2 KB · Affichages: 61
  • Test.xlsm
    16.2 KB · Affichages: 63

job75

XLDnaute Barbatruc
Re : Macro copier coller, ligne variable, conserver formule

Bonsoir Andreleca,

Code:
Sub Copier_coller()
With Range("E6:F" & Range("C" & Rows.Count).End(xlUp).Row)
  If .Row > 5 Then
    [E4:F4].Copy .Cells
    .Value = .Value 'supprime les formules
  End If
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Macro copier coller, ligne variable, conserver formule

Re,

Si la zone copiée est raccourcie après un 1er collage :

Code:
Sub Copier_coller()
Application.ScreenUpdating = False
Range("E6:F" & Rows.Count).Delete xlUp 'RAZ
With Range("E6:F" & Range("C" & Rows.Count).End(xlUp).Row)
  If .Row < 6 Then Exit Sub
  [E4:F4].Copy .Cells
  .Value = .Value 'supprime les formules
End With
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : Macro copier coller, ligne variable, conserver formule

Bonjour Andreleca, le forum,

Si les formules sont immuables on peut se passer de E4:F4 et les entrer directement :

Code:
Sub Formules()
Application.ScreenUpdating = False
Range("E6:F" & Rows.Count).Delete xlUp 'RAZ
With Range("E6:F" & Range("C" & Rows.Count).End(xlUp).Row)
  If .Row < 6 Then Exit Sub
  .FormulaArray = Array("=RC[-2]*2", "=RC[-1]+1")
  .Value = .Value 'supprime les formules
End With
End Sub
J'utilise un Array par subtilité mais ce n'est pas indispensable...

A+
 

Andreleca

XLDnaute Nouveau
Re : Macro copier coller, ligne variable, conserver formule

Très bonne idée ... mais pas dans ce fichier car les formules risquent de changer! Par contre le concept sera utile dans une autre application.
Si je comprend bien les formules des cellules se situent ici;
[QUOTEFormulaArray = Array("=RC[-2]*2", "=RC[-1]+1")][/QUOTE]
Merci encore Job 75 :eek:
 

job75

XLDnaute Barbatruc
Re : Macro copier coller, ligne variable, conserver formule

Re,

Notez que si dans les formules on veut utiliser des références absolues pour les colonnes C et E il faut prendre des précautions.

En effet à partir d'Excel 2007 RC3 et RC5 sont des références de cellules et Excel utilisera le style "A1".

Pour qu'Excel prenne bien le style "R1C1" on utilisera R[0] à la place de R :

Code:
Sub Formules()
Application.ScreenUpdating = False
Range("E6:F" & Rows.Count).Delete xlUp 'RAZ
With Range("E6:F" & Range("C" & Rows.Count).End(xlUp).Row)
  If .Row < 6 Then Exit Sub
  .FormulaArray = Array("=R[0]C3*2", "=R[0]C5+1")
  .Value = .Value 'supprime les formules
End With
End Sub
Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 685
Membres
103 637
dernier inscrit
Hojee