Macro avec variable

je cherche un expert en excell, concerne introduction d'une variable dans une fonction car je connais pas la bonne syntaxe.

Je désire mettre en une variable la sélection 4 cellules cotes à cotes sur une même ligne

Ce qui est fait par cette fonction

' Sélection des cellules à étirer

'aller à la dernière cellule B

DerCell = Range("B15").End(xlDown).Offset(0, 0).Address

Range(DerCell).Select

'selectionner les cell à étirer

Set c = Range(ActiveCell(1, 4), ActiveCell(1, 9))

c.Select 'Dans variable c les 6 cellules à étirer sont sélectionnées, donc E36:J36'

Selection.AutoFill Destination:=Range("E36:J37"), Type:=xlFillDefault 'ce qui étire sur la ligne suivante'

Mais comment remplacer "E36:J37" par ma variable c

Merci d'avance

Bonsoir

Pas sur d'avoir bien compris

Une méthode à tester

Sub test()
Dim Ligne As Long
Dim C As Range

 Ligne = Range("B15").End(xlDown).Row
 Set C = Range("E" & Ligne & ":J" & Ligne)
 C.AutoFill Destination:=C.Resize(1, 7), Type:=xlFillDefault
End Sub

Bonjour

Merci pour la réponse rapide, mais désolé cela marche pas chez moi.

Je fais le test sur un fichier vierge

Complément d'info

sur un fichier excell,

j'insère une ligne en première ligne vierge.

je recherche le dernière ligne et je sélectionne les cellules E36 jusque J36

je voudrais les étirer sur le ligne suivante donc E37 jusque J37

si dessous cela fonctionne très bien

Dim C As Range

'aller à la dernière cellule B

DerCell = Range("B15").End(xlDown).Offset(0, 0).Address

Range(DerCell).Select

'selectionner les cell à étirer

Range(ActiveCell(1, 4), ActiveCell(1, 9)).Select

Set C = Range(ActiveCell(1, 4), ActiveCell(1, 9))

Selection.AutoFill Destination:=Range("E36:J37"), Type:=xlFillDefault

mais je dois remplacer Range("E36:J37") par une variable je pourrais utiliser c avec des offset mais connais pas la syntaxe

Bonjour

Le plus (excel) pratique ce serait de fournir un fichier avec ce que tu as et un exemple (au moins ) de ce que tu veux obtenir

Voila un exemple de fichier, mais sur celui)-ci les lignes sont ("E22:E23") à étirer sur ("E22:J23")

87test.xlsm (18.54 Ko)

Bonjour

Si c'est compris ce que tu veux faire c'est insérer une ligne en fin de ton tableau et y recopier les formules

Si c'est exact utilises cette macro qui le fait

Sub test()
Dim Ligne As Long

 Ligne = Range("B15").End(xlDown).Row
 Rows(Ligne).Copy
 Rows(Ligne + 1).Insert
 On Error Resume Next
 Rows(Ligne + 1).SpecialCells(xlCellTypeConstants, 23).ClearContents
 On Error GoTo 0
End Sub

Attention Vérifies ta formule en colonne I, elle est différente suivant le numéro de ligne

Excellent Banzai c'est tip top ce que je voulais

si je comprends bien tu va teplacer sur le première cellule vide B15 et tu active la ligne

ensuite tu fais un copié collé avec

Rows(Ligne).Copy

Rows(Ligne).Insert (cela fonctionne aussi sans Ligne+1

mais pourrais tu en qlq mots expliquer

On Error Resume Next

Rows(Ligne + 1).SpecialCells(xlCellTypeConstants, 23).ClearContents

On Error GoTo 0

sinon c'est OK GRAND merci à toi

Suis nouveau sur ce forum je sais pas comment renseigner que c'est OK

Bonjour

Je n'active pas la ligne, c'est le fait de la copier qui "signale" qu'elle est activée

On Error Resume Next
Rows(Ligne + 1).SpecialCells(xlCellTypeConstants, 23).ClearContents
On Error GoTo 0

Dans la ligne nouvelle je supprime toutes les constantes (les cellules qui n'ont pas de formule)

Le On Error Resume Next permet d'éviter le plantage si la ligne ne contient aucune constante

On Error Goto 0 : Rétablit la gestion des erreurs

grand merci

rectifié colonne I

Rechercher des sujets similaires à "macro variable"