VBA - Aide pour macro de copie

NicoKaraR Messages postés 20 Statut Membre -  
NicoKaraR Messages postés 20 Statut Membre -
Bonjour,

J'ai un petit souci de macro. J'ai bricolé avec mes maigres connaissances jusqu'à présent mais je bloque un peu maintenant.

J'ai un tableau de données dans une première feuille, je veux copier certaines données dans deuxième feuille.

Voici la configuration de la première feuille :
Col E --- Col F  --- Col G --- Col H --- Col I --- Col J
ABCD --- Blabla --- 30 --- 10 --- 3 --- 0
EFGH --- Toitoi --- 8 --- 8 --- 1 --- 0
IJKL --- Albalb --- 36 --- 10 --- 3 --- 4
MNOP --- Iotiot --- 10 --- 4 --- 2 --- 2

Quand la colonne G est renseignée (non vide), je veux copier E - F - H sur ma feuille 2, I fois.
Et si J est différent de 0, je rajoute une ligne E - F - J.

Avec l'exemple ci-dessus, j'obtiendrai ça :

Feuille 2 :
Col A --- Col B  --- Col C 
ABCD --- Blabla --- 10
ABCD --- Blabla --- 10
ABCD --- Blabla --- 10
EFGH --- Toitoi --- 8
EFGH --- Toitoi --- 8
EFGH --- Toitoi --- 8
IJKL --- Albalb --- 10
IJKL --- Albalb --- 10
IJKL --- Albalb --- 10
IJKL --- Albalb --- 4
MNOP --- Iotiot --- 4
MNOP --- Iotiot --- 4
MNOP --- Iotiot --- 2


À l'heure actuelle, j'ai la macro suivante :

Sub COPIER()

Dim Derlig As Integer, Ligvide As Integer, Lig As Integer, Nbre As Byte, Copies()

Application.ScreenUpdating = False
Sheets("DEUX").Range("A2:D500").ClearContents

With Sheets("UNE")
For Lig = 5 To 139
If .Cells(Lig, "H") > 0 Then
Copies = .Range(.Cells(Lig, "E"), .Cells(Lig, "J")).Value
Nbre = .Cells(Lig, "I")
With Sheets("DEUX")
Ligvide = .Columns("A").Find("", .Range("A1")).Row
.Cells(Ligvide, "A").Resize(Nbre, 6) = Copies
End With
If .Cells(Lig, "J") > 0 Then
Copies = .Range(.Cells(Lig, "E"), .Cells(Lig, "J")).Value
End If
With Sheets("DEUX")
Ligvide = .Columns("A").Find("", .Range("A1")).Row
.Cells(Ligvide, "A").Resize(1, 6) = Copies
End With
End If
Next
End With
End Sub

Pourriez m'aider un petit peu svp ?!

8 réponses

  1. NicoKaraR Messages postés 20 Statut Membre
     
    Merci Gyrus,

    Ta macro fonctionne mais j'y comprends rien ! :(
    Par contre, quand je l'applique à mon fichier, j'ai une erreur 400.
    D'où cela peut-il venir ?
    0
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    Désolé, j'ai égaré ma boule de cristal :D

    En mode débogage, tu dois voir une ligne surlignée en jaune qui t'indiquera où se situe l'erreur.

    A+
    0
  3. NicoKaraR Messages postés 20 Statut Membre
     
    Ça fonctionne maintenant (j'ai rien touché, juste copié la macro dans un nouveau fichier).

    Par contre, que dois-je rajouter pour que cela ne copie pas le format des cellules ?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Gyrus Messages postés 3360 Statut Membre 526
     
    Il faut faire un collage spécial valeurs

    Sub COPIER()
    Dim LigneS As Long, LigneC As Long
    Application.ScreenUpdating = False
    Sheets("DEUX").Range("A2:D500").ClearContents
    With Sheets("UNE")
    For LigneS = 5 To .Range("E" & Rows.Count).End(xlUp).Row
    If .Cells(LigneS, "G") > 0 Then
    LigneC = Sheets("DEUX").Range("A" & Rows.Count).End(xlUp).Row + 1
    .Application.Union(.Range("E" & LigneS), .Range("F" & LigneS), .Range("H" & LigneS)).Copy
    Sheets("DEUX").Range("A" & LigneC).Resize(.Cells(LigneS, "I"), 3).PasteSpecial _
    Paste:=xlPasteValues
    If .Cells(LigneS, "J") > 0 Then
    LigneC = Sheets("DEUX").Range("A" & Rows.Count).End(xlUp).Row + 1
    .Application.Union(.Cells(LigneS, "E"), .Cells(LigneS, "F"), .Cells(LigneS, "J")).Copy
    Sheets("DEUX").Range("A" & LigneC).Resize(1, 3).PasteSpecial _
    Paste:=xlPasteValues
    End If
    End If
    Next
    End With
    End Sub

    A+
    0
  6. NicoKaraR Messages postés 20 Statut Membre
     
    Merci Gyrus !
    Bonne fin de journée ;)
    0
  7. NicoKaraR Messages postés 20 Statut Membre
     
    Bonjour Gyrus,

    Je reviens vers toi car j'ai rencontré un problème avec la macro.

    If .Cells(LigneS, "G") > 0 Then

    Dès qu'une cellule de la colonne G est vide, la macro ne s'exécute plus.

    Et j'ai toujours cette erreur 400 que je n'arrive pas à résoudre..
    0
  8. NicoKaraR Messages postés 20 Statut Membre
     
    http://cjoint.com/data/0ApkyNFF4KQ.htm
    0