Copier une ligne dans une autre feuille en VBA

Bonjour tt le monde,

Je souhaite avoir un code VBA qui sert à copier tout les lignes qui ont le nom de ville = "None" dans la feuil1 et les coller dans la feuil2 à partir de la ligne 10 colonne E (c'est afficher sur le tableau), mais avec le nom de département "USA" affiché dans la feuil 1 colonne J4

merci d'avance

68copier-le-none.xlsm (18.26 Ko)

Bonjour,

je te retourne un essai:

282copier-le-none.xlsm (21.91 Ko)

Merci ça marche très bien

De rien!

merci d'avoir passé le sujet en résolu

Avec Plaisir,

Juste une petite question svp , si je veux copier à partir de la ligne 4. par exemple le tableau commence de la ligne 4

dois je changé quoi sur le code ?

Sub copypast()

Dim ligFin As Long, ligExport As Long
Dim tableau As Variant
Dim departement As String

departement = Feuil1.Range("j4")    
ligExport = 10     
With Feuil1   
    ligFin = .Range("a" & .Rows.Count).End(xlUp).Row
    tableau = .Range("a2", "g" & ligFin)
End With

With Feuil2
    For i = LBound(tableau, 1) To UBound(tableau, 1)
        If tableau(i, 1) = "None" Then
            .Cells(ligExport, 5) = tableau(i, 1)
            .Cells(ligExport, 6) = departement
            .Cells(ligExport, 7) = tableau(i, 3)
            .Cells(ligExport, 8) = tableau(i, 4)
            .Cells(ligExport, 9) = tableau(i, 5)
            .Cells(ligExport, 10) = tableau(i, 6)
            .Cells(ligExport, 11) = tableau(i, 7)

            ligExport = ligExport + 1

        End If
    Next i
End With
End Sub

Private Sub CommandButton2_Click()
Call copypast
End Sub

Re,

Etant donné que tout le reste du code se fait de façon relative par rapport au tableau, il faut uniquement changer cette ligne:

tableau = .Range("a2", "g" & ligFin)

et mettre 4 au lieu de 2, attention, 4 ça doit être la pemière ligne qui suit tes en-têtes, je ne traite pas les en-têtes car elles ne me servent à rien

Merci

et cette ligne ça veut dire quoi ?

ligFin = .Range("a" & .Rows.Count).End(xlUp).Row

Cette ligne:

ligFin = .Range("a" & .Rows.Count).End(xlUp).Row

se traduit par:

ligFin est égal au: numéro de ligne, de la première cellule remplie que l'on trouve, quand on part vers le haut de la dernière ligne de la colonne A. Je pars souvent de la fin du fichier, pour éviter d'avoir des soucis si un tableau contient des cellules vides sur la colonne de référence.

Ok

est ce que je peux mettre à la place de Feuil1 => worksheets("Feuil1 ") ?

Si Feuil1 s'appelle bien "Feuil1" , alors oui tu peux

dsl pour le derengement,

pouvez vs me corrigé l'erreur dans le code, en fait il ya pas d'erreur , la macro se lance mais rien ne change

Sub copypast()

Dim ligFin As Long, ligExport As Long
Dim tableau As Variant
Dim Sub_grp_max As String

sub_grp_class = Worksheets("Feuil5").Range("D8")    'change 3la 7ssan subgroupe prepondéré soi "Calcul Multiple".D8 ola "Country Ratings".M288
ligExport = 18      'numero dial la ligne mnin ayba tcolla dakchi

With Feuil1     'adir hna numero dial la page mnin aytcopa dakchi
    ligFin = .Range("a" & .Rows.Count).End(xlUp).Row
    tableau = .Range("b4", "p" & ligFin)
End With

With Feuil2
    For i = LBound(tableau, 1) To UBound(tableau, 1)
        If tableau(i, 1) = "None" Then
            .Cells(ligExport, 1) = tableau(i, 1)
            .Cells(ligExport, 2) = tableau(i, 2)
            .Cells(ligExport, 3) = tableau(i, 3)
            .Cells(ligExport, 4) = tableau(i, 4)
            .Cells(ligExport, 5) = tableau(i, 5)
            .Cells(ligExport, 6) = tableau(i, 6)
            .Cells(ligExport, 7) = tableau(i, 7)
            .Cells(ligExport, 8) = tableau(i, 8)
            .Cells(ligExport, 9) = tableau(i, 9)
            .Cells(ligExport, 10) = tableau(i, 10)
            .Cells(ligExport, 11) = tableau(i, 11)
            .Cells(ligExport, 12) = tableau(i, 12)
            .Cells(ligExport, 13) = tableau(i, 13)
            .Cells(ligExport, 14) = tableau(i, 14)
            .Cells(ligExport, 15) = tableau(i, 15)

            ligExport = ligExport + 1

        End If
    Next i
End With
End Sub

Private Sub CommandButton1_Click()
Call copypast
End Sub

et merci d'avance

Bonjour,

C'est normal, le code n'a pas entièrrement été adapté, tu testes encore que la première colonne du tableau soit égale à "None", sauf que le département est en colonne 4 maintenant

Et également, le code CommandeButton1_Click doit rester dans le code de la feuille qui possède le bouton, tu ne peux pas mettre le code dans un module

Je n'ai pas pu tester le code mais je pense que c'est bon:

Au fait, tu n'utilises "sub_grp_class" nul part, je ne sais pas si c'est normal...

Rechercher des sujets similaires à "copier ligne feuille vba"