Coller une ligne dans un classeur sélectionné par user

Bonjour,

Je suis débutant en VBA et je rencontre des difficultés sur une macro. Le but de cette macro est de :

  • trouver une ligne dans un fichier (le fichier d’origine où se trouve la macro) à partir d’un mot fixé
  • De copier la ligne
  • De proposer à l’utilisateur de sélectionner un fichier
  • De coller la ligne du début dans le fichier sélectionné

Pour l’instant mon code est :

Sub Paste()

Dim ligne As Integer

Dim ligne1 As Integer

Dim nomfich As Variant

Dim Case1 As String

Case1 = Range("E" & "5")

For ligne = 80 To 100

If Range("B" & ligne) = "Cost" Then

C1 = Range("C" & ligne)

D1 = Range("D" & ligne)

E1 = Range("E" & ligne)

F1 = Range("F" & ligne)

G1 = Range("G" & ligne)

H1 = Range("H" & ligne)

I1 = Range("I" & ligne)

C2 = Range("C" & ligne + 1)

D2 = Range("D" & ligne + 1)

E2 = Range("E" & ligne + 1)

F2 = Range("F" & ligne + 1)

G2 = Range("G" & ligne + 1)

H2 = Range("H" & ligne + 1)

I2 = Range("I" & ligne + 1)

End If

Next ligne

Etiquette: nomfich = Application.GetOpenFilename()

If nomfich = False Then

MsgBox "You do not select the file. Please select to update the data in the follow up document "

GoTo Etiquette

End If

Workbooks(nomfich).Sheets("ECR").Activate

Range("A1") = "E1"

For ligne1 = 1 To 100

If Range("C" & ligne1) = Case1 Then

Range("Y" & ligne1) = C1

Range("Z" & ligne1) = D1

Range("AA" & ligne1) = E1

Range("AB" & ligne1) = F1

Range("AC" & ligne1) = G1

Range("AD" & ligne1) = H1

Range("AE" & ligne1) = I1

Range("AG" & ligne1) = C2

Range("AH" & ligne1) = D2

Range("AI" & ligne1) = E2

Range("AJ" & ligne1) = F2

Range("AK" & ligne1) = G2

Range("AL" & ligne1) = H2

Range("AM" & ligne1) = I2

End If

Next ligne1

End Sub

Cela sans succès…

Avez-vous une idée du problème ?

En vous remerciant par avance.

bonjour,

proposition de correction (non-testée)

Sub Paste()

    Dim ligne As Integer
    Dim ligne1 As Integer
    Dim nomfich As Variant

    Dim Case1 As String
    Case1 = Range("E5")

    For ligne = 80 To 100
        If Range("B" & ligne) = "Cost" Then
            C1 = Range("C" & ligne)
            D1 = Range("D" & ligne)
            E1 = Range("E" & ligne)
            F1 = Range("F" & ligne)
            G1 = Range("G" & ligne)
            H1 = Range("H" & ligne)
            I1 = Range("I" & ligne)

            C2 = Range("C" & ligne + 1)
            D2 = Range("D" & ligne + 1)
            E2 = Range("E" & ligne + 1)
            F2 = Range("F" & ligne + 1)
            G2 = Range("G" & ligne + 1)
            H2 = Range("H" & ligne + 1)
            I2 = Range("I" & ligne + 1)
        End If

    Next ligne
    nomfich = False
    While nomfich = False
        nomfich = Application.GetOpenFilename()
        If nomfich = False Then
            MsgBox "You did not select a file. Please select to update the data in the follow up document "
        End If
    Wend

    Workbooks.Open nomfich
    Workbooks(nomfich).Sheets("ECR").Activate
    Range("A1") = "E1"  ' pas compris ce que tu veux faire ici, probablement E1 sans les "
    For ligne1 = 1 To 100
        If Range("C" & ligne1) = Case1 Then
            Range("Y" & ligne1) = C1
            Range("Z" & ligne1) = D1
            Range("AA" & ligne1) = E1
            Range("AB" & ligne1) = F1
            Range("AC" & ligne1) = G1
            Range("AD" & ligne1) = H1
            Range("AE" & ligne1) = I1

            Range("AG" & ligne1) = C2
            Range("AH" & ligne1) = D2
            Range("AI" & ligne1) = E2
            Range("AJ" & ligne1) = F2
            Range("AK" & ligne1) = G2
            Range("AL" & ligne1) = H2
            Range("AM" & ligne1) = I2

        End If
    Next ligne1

End Sub

Je te remercie pour ta réponse si rapide !

Il y a une erreur lorsque je rentre ta macro, l'erreur d’exécution 9 et lorsque je clique sur débogage, la ligne qui se surligne en jaune est

Workbooks(nomfich).Sheets("ECR").Activate

Cela aide-t-il ?

ton fichier doit contenir une feuille qui s'appelle "ECR". est-ce bien le cas ?

Oui c'est bien le cas.

bonjour,

essaie en remplaçant cette instruction

Workbooks(nomfich).Sheets("ECR").Activate

par

Sheets("ECR").Activate

Oui ça marche en effet, je vous remercie infiniment !!

Bonne continuation

Rechercher des sujets similaires à "coller ligne classeur selectionne user"