Aide sur une macro

Bonsoir,

je souhaiterai une macro copiant une des données d'une feuille sur une autre mais avec un décalage sur la page de destination...

Histoire d'être plus clair je vous ai joint un fichier exemple.

Merci pour votre aide

8exemple.xlsx (13.23 Ko)

Bonsoir,

Un exemple

5exemple-10.xlsm (16.88 Ko)

Salut, tes macro marchent parfaitement par contre j'ai un problème...les données copiées en FeuilleA découlent d'une formule !
La macro copie donc en FeuilleB non pas le résultat mais la formule....une idée pour ajuster la macro ?

Re,

Teste comme ceci

6exemple-10.xlsm (17.37 Ko)

Bonjour,
Essaie ainsi :

Sub Ajout()
Dim ws As Worksheet, ws2 As Worksheet, tbl As Variant, lRow As Long

    Set ws = Sheets("FeuilA")
    Set ws2 = Sheets("FeuilB")
    tbl = ws.Cells(2, 1).CurrentRegion.Value
    With ws2
        lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Cells(lRow, 1).Resize(UBound(tbl), UBound(tbl, 2)).Value = tbl
    End With

End Sub

Sub Suppr()
Dim ws2 As Worksheet, lCol As Long, lRow As Long

    Set ws2 = Worksheets("FeuilB")
    With ws2
        lCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
        lRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        If Not IsEmpty(.Cells(2, 1)) Then .Cells(2, 1).Resize(lRow - 1, lCol).ClearContents
    End With

End Sub
8exemple-10-v2.xlsm (18.83 Ko)

Edit : pas vu ta réponse M12, désolé...

Ça marche ! Merci à vous 2 ;)

Bonjour,

C'est fait

Re,
Et M12 !...
Cdlt.

Salut,
je me permets de relancer ce post (je sais pas si je peux d'ailleurs ) car j'ai modifié mon fichier initial et je n'arrive pas à adapter le VB... (sur mon fichier exemple les lignes en rouge sont mes nouveaux "besoins")

Merci d'avance pour votre aide

8exemple-10.xlsm (17.78 Ko)

Bonjour,

En réponse au dernier sujet, qui est a priori la continuité de celui-ci :

Option Explicit
Sub Ajout()

Dim Lr%, WB As Worksheet

Application.ScreenUpdating = False
Set WB = Sheets("FeuilB")
With Sheets("FeuilA")
    Lr = WB.Range("A" & Rows.Count).End(xlUp).Row + 1
    .Range("A2:G" & .Range("A" & Rows.Count).End(xlUp).Row).Copy
    WB.Cells(Lr, 1).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
    .Range("D2:E" & .Range("A" & Rows.Count).End(xlUp).Row).Copy
    Sheets("FeuilC").Cells(Lr, 1).PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End With

End Sub
Sub Suppr()

Sheets("FeuilB").Range("A2:G" & Rows.Count).Clear

End Sub

Hello, je réponds à la demande de l'autre post en doublon :)

https://forum.excel-pratique.com/excel/modification-code-vba-172512

Si c'est la même demande, voici une idée de piste qui fonctionne et qui est un peu plus light que vos usines

Sub Ajout()

    Ender = Starter + 20

    ' Copie de A vers B

    Sheets("FeuilA").Range("A" & Starter & ":G" & Ender).Copy Destination:=Sheets("FeuilB").Range("A" & Starter & ":G" & Ender)

    ' Copie de A vers C
    Sheets("FeuilA").Range("D" & Starter & ":D" & Ender).Copy Destination:=Sheets("FeuilC").Range("A" & Starter & ":A" & Ender)
    Sheets("FeuilA").Range("E" & Starter & ":E" & Ender).Copy Destination:=Sheets("FeuilC").Range("B" & Starter & ":B" & Ender)

    Starter = Starter + 21

End Sub

Le fichier qui marche

<code'ialement/>

5exemple.xlsm (19.83 Ko)

Merci pour votre aide !

Désolé pour le doublon mais je penC que finalement mon autre post n'etait plus accessible...car aucune réponse alors que généralement les réponses sont très rapide sur ce forum !

j'ai testé c'est nickel et va me permettre de comprendre le code !

Bonjour,

je viens de m'apercevoir d'un problème... avec la formule de Pedro22, les données sont bien copiées mais dans mon fichier définitif, la valeur des cellules est dynamique (la valeur change a chaque pression de F9 par exemple) du coup je viens de me rendre compte que les données copiées depuis l'onglet A vers l'onglet B et celle copiées de A vers C ne sont pas les même quand la macro se lance.

En fait la copie se fait de A vers B mais ensuite les valeurs changent et la copie se fait de A vers C...

Je souhaiterai que la copie de A vers B et A vers C se fasse avant le changement des données.

En espérant avoir été clair...mais je suis pas sûr ! lol

Si joint le fichier en question.....merci !

1exemple.xlsm (20.95 Ko)

Bonjour,

Pour moi c'est pas clair, et si c'est lié a l'actualisation intempestive de formules de calculs, je pense que c'est plutôt un défaut de conception du fichier qu'un problème à gérer au niveau de VBA...

Merci pour ton retour Pedro mais pour être plus clair, avec ta formule (et comme je le souhaitais) :

Si sur la FEUILLE A j'ai en première ligne les valeurs : 1 5 6 9 8 4 7 (valeurs générées tout bêtement par un ALEA.ENTRE.BORNES (1,10)

la macro va bien copier en FEUILLE B les valeurs 1 5 6 9 8 4 7

mais en FEUILLE C (où la macro doit copier uniquement les colonnes D et E) je devrai obtenir les valeurs 9 et 8 et au lieu de cela j'ai carrément d'autres valeurs car entre temps (entre la copie de FEUILLE A vers FEUILLE B et de FEUILLE A vers C les données se sont recalculées).

Ma question est donc de savoir si il est possible de faire les "copiés collé" avant le recalcul des cellules afin d'obtenir avec mon exemple en FEUILLE B les valeurs 1 5 6 9 8 4 7 et en FEUILLE C les valeurs 9 8.

Par avance merci

Dans ce cas, a ta place je supprimerais les formules ALEA.ENTRE.BORNES, et je créerais une macro dédiée à l'actualisation de la plage. Avec une instruction du type :

Cells(Lig, Col).Value = Application.RandBetween(0, 100)

Merci mais cela risque d’être trop compliqué comme solution car pour l'exemple je parlais d'un ALEA mais je risque d'avoir d'autre formules à l'avenir...

Rechercher des sujets similaires à "aide macro"