Copier/coller en fonction d'une chaîne de caractère

Bonjour,

J'ai adapté une marco pour extraire des données de certains fichiers Excel que j'ai mis dans un tableur excel,

J'aimerais ensuite copier ces données dans un autre tableur Excel en fonction de leur nom.

J'ai commencé une marco mais n'arrivant à rien je sollicite donc votre aide.

Ayant un niveau débutant je me suis rendu compte que j'essayais de comparais des Ranges et non des chaînes de caractères.

Avez vous une idée pour que je puisse en fonction du nom copier et coller un text ?

Merci d'avance,

Cabouse

bonjour,

une proposition

Sub test()
    Dim i As Long, lastrow As Long
    Dim Pays
    Dim plage As Range, re As Range

    dl = Worksheets("data").Cells(Rows.Count, "B").End(xlUp).row
    lastrow = Worksheets("template").Cells(Rows.Count, "B").End(xlUp).row
    Set plage = Worksheets("data").Cells(1, "B").Resize(dl)

    For i = 1 To lastrow Step 1
        Pays = Worksheets("template").Cells(i, "B")
        Set re = plage.Find(Pays, lookat:=xlPart)
        If re Is Nothing Then
            MsgBox "pays " & Pays & " non trouvé dans la feuille data"
        Else
            Worksheets("data").Cells(re.row, "D").Resize(, 18).Copy
            Worksheets("template").Range("D" & i).PasteSpecial xlPasteValues
        End If
    Next i
End Sub

les noms de pays de ta feuille template doivent se retrouver dans ta feuille data. (Belgique <> Belgium, etc ...)

Bonjour h2so4,

Merci beaucoup ça marche parfaitement

Bonjour,

code adapté

Bonjour h2so4,

Encore un grand merci, je ne voulais pas te déranger plus que ça c'est pour cela que je l'avais mis en résolue.

Très bon weekend.

Cabouse

Bonjour h2so4,

J'ai essayé d'adapter ta marco pour copier les valeurs en colonne et non en ligne mais j'obtiens une erreur de compilation, peux-tu m'aider stp ?

j'essaye de copier la ligne 15 et le nom se trouve à la ligne 5

Merci,

Cabouse

bonjour,

voici une correction de ton code.

Sub transposeliq()
    Dim i As Long, lastrow As Long, dc As Long
    Dim Pays As String
    Dim Plage As Range, re As Range

    dc = Worksheets("summary").Cells(5, Columns.Count).End(xlToLeft).Column
    lastrow = Worksheets("cash").Cells(Rows.Count, "B").End(xlUp).Row - 1
    Set Plage = Worksheets("summary").Cells(5, "A").Resize(, dc)

    For i = 4 To lastrow Step 1 'on prend chaque pays de la liste cash et on le recherche dans le nom de fichier (ligne 5) de la feuille summary
        Pays = Worksheets("cash").Cells(i, 2)
        Set re = Plage.Find(Pays, lookat:=xlPart, MatchCase:=False) 'recherche partielle, ignorant la casse
        If re Is Nothing Then
            MsgBox "pays " & Pays & " non trouvé dans la feuille data"
        Else
            Worksheets("Summary").Cells(15, re.Column).Copy
            Worksheets("cash").Range("AN" & i).PasteSpecial xlPasteValues
        End If
    Next i
End Sub

Par rapport à tes données, cette méthode de recherche risque de donner des problèmes pour la France et la Hongrie, à cause des recherches partielles. Si tu veux éviter ces problèmes, il faut que tu remplaces le nom de fichier en ligne 5 par le nom du pays tel qu'écrit dans la feuille cash et remplacer le lookat:=xlpart par lookat:=xlwhole dans le code

Bonjour h2so4,

Ça marche tres bien merci,

Je vais essayer de changer les noms le seule problème c'est que je ne détermine pas le nom à la ligne 5.

Merci encore,

Bonne journée.

Rechercher des sujets similaires à "copier coller fonction chaine caractere"