Probleme code VBA

Résolu
Alex2109 -  
 Alex2109 -
Bonjour,

Je suis a la recherche d'un code qui fonctionne pour copier les adresses mails des clients qui l'ont fourni en feuille 1 vers la colonne prévue a cet effet en feuille 2.
En clair j'ai deux feuilles sur excel avec des informations sur plusieurs clients. Dans ces deux feuilles il y a quasiment les mêmes clients. Seulement sur la feuille 1 y est indiqué des adresses mails qu'il faut mettre en feuille 2 dans la colonne correspondante.
Dans la feuille 2 il y a deja quelques adresse mails qui ont été rajouté manuellement mais il manque au moins 200.
Je veux donc que le code fasse matcher les noms des clients de la colonne B feuille 1 avec la colonne C feuille 2, afin que des qu'il trouve le même nom il aille copier l'adresse mail en colonne G de la feuille 1 vers la colonne L de la feuille 2.

Voici mon code, mais rien ne se passe... Et Excel ne me renvoie pas de message d'erreur. Je suis débutant sur VBA, et je n'arrive vraiment pas a saisir d'ou vient le problème.
Si l'un de vous peut m'aider je serai vraiment reconnaissant.

Merci d'avance a tous et à toutes.

Sub saisie2()
Dim Lig As Long
Dim NbrLig As Long, NumLig As Long
Dim cde As String
Dim i As Integer


NbrLig = Worksheets("Feuil2").Range("C" & 65536).End(xlUp).Row
NumLig = Worksheets("Feuil1").Range("B" & 65536).End(xlUp).Row
For Lig = 1 To NbrLig
   cde = Worksheets("Feuil2").Range("C" & Lig)
   If cde = "" Then GoTo lab
   i = 1
   For i = 1 To NumLig
      If Worksheets("Feuil1").Range("B" & i).Value = char Then
         Worksheets("Feuil1").Range("G" & i).Copy
         Worksheets("Feuil2").Range("L" & Lig).Select
         Selection.Paste
         Exit For
      End If
   Next i

lab:
Next Lig
End Sub

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,

    Regarde ces deux lignes de ton code que j'ai volontairement rapprochées :
    cde = Worksheets("Feuil2").Range("C" & Lig)
    If Worksheets("Feuil1").Range("B" & i).Value = char Then

    0
  2. Alex2109
     
    Merci pur ta réponse pijaku,

    mais je ne saisi pas, j'ai esayé de remplacer le "i" par "lig" mais ca ne fonctionne toujours pas, il me ressort une erreur du coup...

    Un petit peu plus d'indication peut etre?
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      i et Lig étaient bon.
      Par contre, que penser de cde et char ?
      0
    2. Alex2109 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Je ne les ai pas défini correctement peut être?

      Je ne suis pas tres bon en programmation mais j'aimerai vraiment comprendre d'ou vient le probleme?
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > Alex2109
       
      Si tu veux comparer l'égalité entre : Worksheets("Feuil2").Range("C" & Lig) et Worksheets("Feuil1").Range("B" & i).Value soit tu utilises l'expression entière :
      If Worksheets("Feuil1").Range("B" & i).Value = Worksheets("Feuil2").Range("C" & Lig).Value

      soit tu utilises une variable ET UNE SEULE !
      If Worksheets("Feuil1").Range("B" & i).Value = cde Then


      Voici ton code légèrement modifié :
      Sub saisie2()
      Dim Lig As Long
      Dim NbrLig As Long, NumLig As Long
      Dim cde As String
      Dim i As Integer
      
      
      NbrLig = Worksheets("Feuil2").Range("C" & 65536).End(xlUp).Row
      NumLig = Worksheets("Feuil1").Range("B" & 65536).End(xlUp).Row
      With Worksheets("Feuil2")
         For Lig = 1 To NbrLig
            cde = .Range("C" & Lig)
            If cde <> "" Then 
               For i = 1 To NumLig
                  If Worksheets("Feuil1").Range("B" & i).Value = cde Then
                     Worksheets("Feuil1").Range("G" & i).Copy .Range("L" & Lig)
                     Exit For
                  End If
               Next i
            End If
        Next Lig
      End With
      End Sub
      0
    4. Alex2109 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Ca ne fonctionne pas non plus. Peut etre est ce du au fait que les deux feuilles n'aient pas le meme nombre de ligne et que les client ligne par ligne d'une feuille a l'autre ne soit pas pareil?

      C'est bizarre, car en lisant ton code j'ai tres bien compris ce qu'il faisait...
      0
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > Alex2109
       
      Peut etre est ce du au fait que les deux feuilles n'aient pas le meme nombre de ligne et que les client ligne par ligne d'une feuille a l'autre ne soit pas pareil?
      Non rien à voir.
      Je dirais plutôt un souci avec les données.
      Si tu ajoutes un Stop, est ce que ta macro s'arrête :
      Sub saisie2()
      Dim Lig As Long
      Dim NbrLig As Long, NumLig As Long
      Dim cde As String
      Dim i As Integer
      
      
      NbrLig = Worksheets("Feuil2").Range("C" & 65536).End(xlUp).Row
      NumLig = Worksheets("Feuil1").Range("B" & 65536).End(xlUp).Row
      With Worksheets("Feuil2")
         For Lig = 1 To NbrLig
            cde = .Range("C" & Lig)
            If cde <> "" Then 
               For i = 1 To NumLig
                  If Worksheets("Feuil1").Range("B" & i).Value = cde Then
      Stop
                     Worksheets("Feuil1").Range("G" & i).Copy .Range("L" & Lig)
                     Exit For
                  End If
               Next i
            End If
        Next Lig
      End With
      End Sub

      Si la macro ne s'arrête jamais, cela signifie simplement qu'aucune des données de ta colonne C Feuil2 ne se retrouve en colonne B Feuil1...
      0