Fonction Si et Copier/Coller

Bonjour à tous, je suis nouveau sur ce site et j'adore toutes les fonctions VBA que je peux réaliser.

Malheureusement je suis tout nouveau dans ce domaine et après avoir chopé quelques lignes de codes, je me rends compte que ce monde est beaucoup plus complexe que je ne l'imaginais.

J'expose mon problème:

J'ai essayé de créer une macro VBA pour copier coller des valeurs d'un tableau sur un autre tableau du même excel Mais j'ai inclus une fonction si qui me sert a définir les conditions de copier/coller.

Concrètement, Si une de mes colonnes G, I, J, ou K est supérieur a 0, alors je copie les valeurs de mes colonnes B, C, G, I, J, et K de ma feuille 2 sur les colonnes D, E,H, F, G, et J de ma feuille 1:

Voici le code:

Private Sub Worksheet_Activate()
    Macro1
End Sub

Celui-ci étant avec ma feuille 1

Sub Macro1()
    If IsNumeric(Range("G4:G34"))> 0 Or IsNumeric(Range("I4:34"))> 0 Or IsNumeric(Range("J4:J34"))> 0 Or IsNumeric(Range("K4:K34"))> 0 Then
        With Sheets("Feuil2")
            .Range("B4:B34").Copy
            Range("D15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            .Range("C4:C34").Copy
            Range("E15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            .Range("G4:G34").Copy
            Range("H15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            .Range("I4:I34").Copy
             Range("F15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            .Range("J4:J34").Copy
            Range("G15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            .Range("K4:K34").Copy
            Range("J15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
        End With
    End If
End Sub

Et celui-ci pour la feuille 2.

Et je joins si besoin mon excel.

Ma macro ne fonctionne pas mais je n'arrive pas a déterminer les raisons...

Merci pour réponses! =)

6reportheuresx.xlsx (29.31 Ko)

Bonjour Yosh et bienvenu, bonjour le forum

Essaie comme ça :

Sub Macro1()
Dim OS As Worksheet 'Onglet Source
Dim OD As Worksheet 'Onglet Destination
Dim I As Integer 'Incrément
Dim LI As Integer 'LIgne

Set OS = Worksheets("Hoja2")
Set OD = Worksheets("Hoja1")
For I = 4 To 34
    If OS.Cells(I, "G").Value > 0 Or OS.Cells(I, "I").Value > 0 Or OS.Cells(I, "J").Value > 0 Or OS.Cells(I, "K").Value > 0 Then
        LI = IIf(OD.Range("B15").Value = "", 15, OD.Cells(Application.Rows.Count, "B").End(xlUp).Row + 1)
        OD.Cells(LI, "D").Value = OS.Cells(I, "B").Value
        OD.Cells(LI, "E").Value = OS.Cells(I, "C").Value
        OD.Cells(LI, "H").Value = OS.Cells(I, "G").Value
        OD.Cells(LI, "F").Value = OS.Cells(I, "I").Value
        OD.Cells(LI, "G").Value = OS.Cells(I, "J").Value
        OD.Cells(LI, "J").Value = OS.Cells(I, "K").Value
    End If
Next I
End Sub

Bonjour toutes et tous

je n'ai aucun code sur ton classeur et en essayant d'enregistrer le classeur avec les macros peut-être (==>Classeur Excel(Prenant en charges les macros<==))

crdlt,

André

Oui, c'est normal, car quand j'essaye de valider ma macro sur mon excel, il ne me l'a prends pas en compte et donc la supprime automatiquement quand je sauvegarde le tout...

Concernant le code que tu m'as passé, TauTheme, il ne fonctionne pas, il m'indique une erreur: L'indice n'appartient pas à la sélection (Indice hors plage (erreur 9)).

J'ai du oublier un truc...
Edit: Erreur de ma part sur la dénomination de mes feuilles!

Du coup Tautheme, je vois que tu es ultra callé en VBA, ca m'intéresse de ouf!

Tu aurais des liens, des sites ou je peux comprendre toutes les formules que je peux utiliser en VBA, car ca reste un peu flou pour moi! x)

Encore Merci! :D

Edit 2: Alors, je viens de l'exploiter ce code VBA, et il manque une chose:

Quand je suis sur la première ligne, tout est nickel, par contre quand je veux rajouter une deuxième une ligne en dessous de la première, il ne me la prends pas en compte et il me remplace la première ligne par la deuxième!
Concrètement, il n'arrive pas a copier les données les unes en dessous des autres sur la feuille1.

Bonsoir le fil, bonsoir le forum,

Met un fichier avec des données que l'on puisse tester car un fichier vide c'est un peu couillon... Sinon, j'ai pratiquement tout appris sur des forums...

Voila le résultat:

Tu peux essayer de changer les valeurs et tu verras que, avec cette commande, il ne passe pas a la ligne et écrit toujours sur la même ligne 15.

Re,

En effet, pour calculer la ligne LI, je me basais sur la colonne B et comme il n'y a pas de données en colonne B, la variable LI restait toujours égale à 15 et les lignes se copiaient les une sur les autres. Le code corrigée avec la colonne D comme référence :

Sub Macro1()
Dim OS As Worksheet 'Onglet Source
Dim OD As Worksheet 'Onglet Destination
Dim I As Integer 'Incrément
Dim LI As Integer 'LIgne

Set OS = Worksheets("Hoja 2")
Set OD = Worksheets("Hoja 1")
For I = 4 To 34
    If OS.Cells(I, "G").Value > 0 Or OS.Cells(I, "I").Value > 0 Or OS.Cells(I, "J").Value > 0 Or OS.Cells(I, "K").Value > 0 Then
        LI = IIf(OD.Range("D15").Value = "", 15, OD.Cells(Application.Rows.Count, "D").End(xlUp).Row + 1)
        OD.Cells(LI, "D").Value = OS.Cells(I, "B").Value
        OD.Cells(LI, "E").Value = OS.Cells(I, "C").Value
        OD.Cells(LI, "H").Value = OS.Cells(I, "G").Value
        OD.Cells(LI, "F").Value = OS.Cells(I, "I").Value
        OD.Cells(LI, "G").Value = OS.Cells(I, "J").Value
        OD.Cells(LI, "J").Value = OS.Cells(I, "K").Value
    End If
Next I
End Sub

Super Merci pour le code et l'aide précieuse que tu m'as apporté! Ca marche nickel! =)

Rechercher des sujets similaires à "fonction copier coller"