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...