VBA copier valeur cellules si. sur plusieurs feuilles
Bonjour,
Je suis novice en VBA. J'ai déjà réalisé des choses simple mais là je sèche...
J'ai un EXCEL avec deux feuilles - voir photos ("administrative" et "financière") dans lesquelles j'ai des tableaux avec des références. je voudrais :
si dans la feuille "administrative", la cellule C26 est remplie alors dans la feuille "financière" la cellule E2 est égale à la cellule C28 de la feuille "administrative" et la cellule F2 (feuille "financière") est égale à la cellule C29 (feuille "administrative").
De plus il faudrait que cette macro ce répète pour tous les petits tableaux de la feuille "administrative", de façon à ce le tableau de la feuille "financière" se remplisse automatiquement tant que la première ligne de chaque petit tableau de référence (feuille "administrative") est remplie ; exemple :
si dans la feuille "administrative", la cellule C26 est remplie alors dans la feuille "financière" la cellule E2 est égale à la cellule C28 de la feuille "administrative" et la cellule F2 (feuille "financière") est égale à la cellule C29 (feuille "administrative").
et si dans la feuille "administrative", la cellule C36 est remplie alors dans la feuille "financière" la cellule E3 est égale à la cellule C38 de la feuille "administrative" et la cellule F3 (feuille "financière") est égale à la cellule C39 (feuille "administrative").
ainsi de suite.
Je me dis que vu que c'est un enchainement de 10 lignes d'écart (feuille "administrative") à chaque fois, il doit y avoir une méthode pour ne pas rédiger à chaque fois la même chose.
Merci par avance.
Bonjour,
Essayez ceci:
Option Compare Text
Sub Recup_Donnees()
Dim f1 As Worksheet, f2 As Worksheet
Dim i As Long, DerLig As Long, Lig_Dest As Long
Application.ScreenUpdating = False
Set f1 = Sheets("administrative")
Set f2 = Sheets("financière")
Lig_Dest = 2
DerLig = f1.Range("B" & Rows.Count).End(xlUp).Row
For i = 26 To DerLig Step 10
If f1.Cells(i, "C") <> "" Then
f2.Cells(Lig_Dest, "E") = f1.Cells(i + 2, "C")
f2.Cells(Lig_Dest, "F") = f1.Cells(i + 3, "C")
Lig_Dest = Lig_Dest + 1
End If
Next i
Set f1 = Nothing
Set f2 = Nothing
End Sub
Cdlt
Génial ça marche super bien.
Merci beaucoup je n'aurais jamais trouver en si peu de temps.