XL 2013 [résolu] VBA Etirer formule jusqu'à la dernière ligne

Tooxy

XLDnaute Nouveau
Bonjour à tous,

Je me permets d'user de vous solliciter pour m'aider à modifier ma macro pour laquelle je souhaite étirer la formule jusqu'à la dernière ligne existante.
Plusieurs sujets évoque les solutions mais hélas à chaque fois, j'obtiens un résultat infructueux

Dans le code ci-après, je cherche la bonne syntaxe pour =Range("H3:H30000") et remplacer le 30000 par la dernière ligne qui serait donc si j'ai bien compris H3: &derlig

Code:
Sub Consolider()
'
' on va consolider les motivations
'

'
    Columns("F:F").Select
    Selection.Replace What:="=""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("G:G").Select
    Selection.Replace What:="=""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Replace What:="""", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Range("H3").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE)"
    Range("H3").Select
    Selection.AutoFill Destination:=Range("H3:H30000")
    Range("H3:H30000").Select
    Range("I3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]=RC[-2],"""",VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE))"
    Range("I3").Select
    Selection.AutoFill Destination:=Range("I3:I30000")
    Range("I3:I30000").Select
End Sub

Merci infiniment de votre aide.
 
Dernière modification par un modérateur:

Lone-wolf

XLDnaute Barbatruc
Re : VBA Etirer formule jusqu'à la dernière ligne

Bonjour Tooxy,

si tu mettait le fichier joint ça serait mieux. Sinon un exemple à adapter à ton cas

EDIT: Bonjour Chris :)

Code:
Sub test()
With Feuil1
.Range("f1").FormulaR1C1 = "=VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE)"
.Range("f1").Copy 'cellule contenant la formule
.Range("h3").PasteSpecial Paste:=xlPasteFormulas
.Range("h3").AutoFill .Range("h3:h30000"), Type:=xlFillDefault

.Range("g1").FormulaR1C1 = "=IF(RC[-3]=RC[-2],"""",VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE))"
.Range("g1").Copy 'cellule contenant la formule
.Range("i3").PasteSpecial Paste:=xlPasteFormulas
.Range("i3").AutoFill .Range("i3:i30000"), Type:=xlFillDefault
End With
End Sub
 
Dernière édition:

Chris401

XLDnaute Accro
Re : VBA Etirer formule jusqu'à la dernière ligne

Re
Bonjour Lone-wolf

En attendant le fichier, à tester :
Code:
Sub Consolider()
'
' on va consolider les motivations
'
Dim derlg As Integer
derlg = Range("F" & Rows.Count).End(xlUp).Row

    With Range("F2:G" & derlg)
    .Replace What:="=""", Replacement:=""
    .Replace What:="""", Replacement:=""
    End With
    
    Range("H3").FormulaR1C1 = "=VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE)"
    Range("I3").FormulaR1C1 = _
        "=IF(RC[-3]=RC[-2],"""",VLOOKUP(RC[-2],Export_b!C1:C2,2,FALSE))"
        
    Range("H3:I3").AutoFill Destination:=Range("H3:I" & derlg)
    
    'Pour n'afficher que les valeurs
    Range("H3:I" & derlg) = Range("H3:I" & derlg).Value
    
End Sub
Chris
 

Tooxy

XLDnaute Nouveau
Re : VBA Etirer formule jusqu'à la dernière ligne

Chris401;

Ta solution fonctionne à merveille et la cerise sur le gâteau c'est que la macro s’exécute beaucoup plus rapidement.
Génial, génial !!!

Merci infiniment :)
 

Discussions similaires

Réponses
1
Affichages
113

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley