Copier d'un classeur à un autre sous condition avec macro

Bonjour,

Je ne trouve pas comment copier des cellules d'un fichier excel à un autre avec la condition " si la ligne du tableau commence par "NomClient" sachant que "NomClient" est toujours situé en B3 du fichier de départ.

Je voudrais donc que par exemple les données situées en C7 se reportent en Gi, i étant le numéro de la ligne contenant "NomClient" en première colonne.

Pouvez-vous m'aidez ?

DerJul

Bonjour

Merci de mettre ton fichier en ligne avec données non confidentielles. Ce sera plus simple de te donner une solution qui colle à ton fichier et celaévitera de tout refaire.

Amicalement

Pas de problème voilà les fichiers

Merci de m'aider toute aide est la bienvenue

Personne ne peut m'aider ?

Bonjour,

Un peu de patience, tu auras de l'aide,

pour ma part, je n'ai pas le temps de regarder, inutile de poster en MP

Amicalement

Claude

Bonjour,

Je vais patienter

En attendant j'ai essayé ça mais ça ne fonctionne pas :

Sub synchro()
Dim Sh1 As Worksheet, Sh2 As Worksheet, Wb1 As Workbook, Wb2 As Workbook, Ch2$, j%, i&

    Ch2 = "C:\Users\DerJul\Desktop\Stage L3\internet\Temps Prévisionnel internet 2.xls"

    Set Wb1 = ThisWorkbook
    Set Sh1 = Wb1.Worksheets("prévisions en cours")
               Workbooks.Open Ch2
          Set Wb2 = Workbooks("temps prévisionnel internet 2.xls")
          Set Sh2 = Wb2.Worksheets("feuil1")
          Rw = Sh2.Cells(Rows.Count, 1).End(xlUp).Row
         For i = 3 To Rw
               If Sh2.Cells(i, 1) = Sh1.Cells(2, 3) Then

           Sh2.Cells(i, 7) = Sh1.Cells(7, 3)

            End If
         Next i
    Wb2.Save
    Wb2.Close
    End Sub

Re,

Ok j'ai regardé tes fichiers.

En gros tu as ton fichier Temps prévisionnel qui contient les noms de client et tu voudrais copier des données du fichier Matrice prévisions client si le nom du client se trouvant en B2 est trouvé dans le fichier Temps prévisionnel ?

Deux remarques :

  • les cellules fusionnées à éviter !! dans les codes (B2,B3 etc...)
  • Je ferai plutôt la référence d'après le code client et non d'après le nom.

A te relire

Bonjour Dan,

Oui c'est bien ce que je voudrais faire.

Pour la cellule fusionné je peux enlever la fusion ce n'est pas un problème et je ne vois pas d'inconvénient à utiliser le code client (je n'y avais pas pensé ^^) mais pour l'instant j'avais réglé le pb des doublons des noms clients en insérant la première lettre du prénom dans le nom, ce qui n'est pas optimal je le concède.

Pouvez-vous m'aidez ?

DerJul

re

Une bonne règle est d'utiliser le code plutôt que le nom. De cette manière tu évites justement le souci des doublons.

Je vais donc regarder dans ce sens

Amicalement

Re,

essaie avec ce code :

Sub synchro()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim Wb1 As Workbook, Wb2 As Workbook
Dim ch2 As String
Dim lg As Integer
ch2 = "C:\Users\DerJul\Desktop\Stage L3\internet\Temps Prévisionnel internet 2.xls"
Set Wb1 = ThisWorkbook
Set Sh1 = Wb1.Worksheets("prévisions en cours")
Workbooks.Open ch2
Set Wb2 = Workbooks("Temps Prévisionnel internet 2.xls")
Set Sh2 = Wb2.Worksheets("feuil1")
On Error Resume Next
lg = WorksheetFunction.Match(Sh1.Range("C3"), _
    Sh2.Range("C3:C" & Range("C" & Rows.Count).End(xlUp).Row), 0) + 2
If lg > 0 Then
    Sh2.Cells(lg, 7).Value = Sh1.Cells(7, 3).Value
Else:
    MsgBox "le client n'existe pas dans le fichier de destination"
    Wb2.Close
Exit Sub
End If
Wb2.Save
Wb2.Close
End Sub

J'ai considéré que le code client se mettait en C3 (au lieu de C2) de la feuille "prévision en cours". veille donc à cela et à défusionner les cellules.

Evite de mettre des accents et des espaces dans le nom de tes fichiers ou feuille. Cela pose toujours des soucis en programmation.

Si ok n'oublie pas de cloturer en cliquant sur le V vert

Amicalement

MERCI BEAUCOUP,

Cela fonctionne parfaitement

Je vous suis très reconnaissant,

DerJul

Rechercher des sujets similaires à "copier classeur condition macro"