VBA avec formule recherchev

Bonjour à tous !!

Alors je vais vous expliquer ce que je souhaite affiner. J'ai un dossier avec une feuille nommée "MJANVIER" où l'on rempli des heures, de cette feuille je réalise une nouvelle feuille nommée "Récap." où je vais copier les colonnes A et B de la feuille "MJANVIER" (cf. premier code).

Une fois que c'est fait je souhaite ajouter à ce code une formule rechercheV qui s'appliquera sur la colonne C de la feuille "Récap." pour chaque ligne complétée de la colonne A de cette même feuille. (cf. deuxième code)

Le code fonctionne plus ou moins à un détail près, c'est qu'il met les valeurs de cette formule dans la colonne B au lieu de la colonne C, il écrase donc les informations que j'avais préalablement collées.

Je ne sais pas si c'est clair et si quelqu'un pourra me dépatouiller !

Autre chose, je compte complété ce code pour effectuer cette manipulation sur tous les mois de l'année et intégrer tous les résultats sur la feuille "Récap."Est-ce qu'il existe un moyen de simplifier le processus? Sinon je risque d'avoir un code avec énormément de ligne (copié le code pour récupérer la colonne A et B et le code pour recherchev pour chaque mois de l'année en gros).

Merci d'avance.

Sub Copier()
Dim i As Long

  For Each f In Worksheets
        f.Unprotect
    Next f

        i = Sheets("MJANVIER").Range("B65536").End(xlUp).Row
        Sheets("MJANVIER").Range("A12:B" & i).Copy
        ActiveSheet.Range("A4").PasteSpecial
        Application.CutCopyMode = False

    For Each f In Worksheets
        f.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
        True, AllowUsingPivotTables:=True
    Next f

End Sub
Sub Test()
Dim Plage As Range, C As Range, Teste

  For Each f In Worksheets
        f.Unprotect

With Sheets("Récap.")
    Set Plage = .Range(.[A4], .Cells(.Rows.Count, 1).End(xlUp))
End With

With Sheets("MJANVIER")
    For Each C In Plage
        Teste = Application.VLookup(C.Value, Sheets("MJANVIER").Range("A12:S30"), 18)
    Next C
End With

    For Each f In Worksheets
        f.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowSorting:=True, AllowFiltering:= _
        True, AllowUsingPivotTables:=True
    Next f
End Sub

C'est quoi Teste dans:

For Each C In Plage
        Teste = Application.VLookup(C.Value, Sheets("MJANVIER").Range("A12:S30"), 18)
Next C

Je ne suis pas un pro du codage désolé.

J'ai récupéré des débuts de code que j'ai essayé de mettre à ma sauce.

Par contre si je ne mets pas de variable devant ça ne fonctionne pas la formule si?

Bah en gros Teste sera la variable qui va receptionner le résultat de la rechercheV, mais il n'est utilisé nulle part.. donc tu ne devrais avoir aucune écriture, ni en colonne B ce qui est étrange...

Mets un fichier expliquant ce que tu veux faire...

Désolé je ne suis plus devant le poste avec le fichier. J'ai donc récupéré la version précédente et bizarrement le code ne fonctionne plus...

Enfin ça te permet de voir le principe même si ce n'est pas totalement à jour.

Je t'ai mis des commentaires pour expliquer exactement le principe souhaité.

A+!

C'est bon je me suis réglé le problème tout seul !!

J'ai utilisé la formule autofill et ça marche bien :

Sub Autofill()
Dim i As Long

    i = ActiveSheet.Range("A65536").End(xlUp).Row

    Range("C4:F4").Select
    Selection.Autofill Destination:=Range("C4:F" & i), Type:=xlFillDefault

End Sub
Rechercher des sujets similaires à "vba formule recherchev"