Probleme code VBA
Résolu
Alex2109
-
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.
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
A voir également:
- Probleme code VBA
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
Bonjour,
Regarde ces deux lignes de ton code que j'ai volontairement rapprochées :
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
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?
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?
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 :
soit tu utilises une variable ET UNE SEULE !
Voici ton code légèrement modifié :
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
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 :
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...
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...