XL 2010 Boucle copie avec while et if

coni1983

XLDnaute Nouveau
Bonjour,
Je bloque sur la touche finale d'un projet.
J'ai dans un onglet source "Selection" des données en colonne c que je souhaite coller sur l'onglet destination "synth" en colonne L, si le nom correspond.
1 er PB : même quand ma liste de nom est identique : le code ci dessous ne fonctionne pas.
2 ème PB : j'ai récemment découvert que les cellules de ne seraient pas identiques. En effet, l'onglet source est une extraction csv qui me met dans la meme cellule le nom, prénom, date de naissance ..... (convertir ne fonctionne pas car on a parfois Durant et parfois DE Gaulle)
Je souhaite donc dire :
Si tu retrouves dans le contenu des cellules de la colonne A de l'onglet Selection le nom de la colonne C de synth, alors, tu colles selection/colonne C en synth/colonne L.

Tout cela pouvant être variable, les plages le sont aussi.
Voici ce que j'ai écris (qui ne prend pas en compte le côté bazard du csv) :

Sub whilehab()
Dim num_ligne As Integer
Dim lig_copy As Integer
lig_copy = 4
num_ligne = 2
While Sheets("synth").Cells(num_ligne, 3) <> ""
num_ligne = num_ligne + 1
Wend
While Sheets("Selection").Cells(num_ligne, 1) <> ""
If Sheets("synth").Cells(num_ligne, 3) = Sheets("Selection").Cells(lig_copy, 1) Then
Sheets("synth").Cells(num_ligne, 3).Offset(0, 9) = Sheets("Selection").Cells(lig_copy, 1).Offset(0, 2)
Else
Sheets("synth").Cells(num_ligne, 3).Offset(0, 9) = ""
End If
lig_copy = lig_copy + 1
Wend
End Sub

Comme c'est personnes, j'ai anonymisé le doc que vous trouverez en pj.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Demo (1).xlsm
    61.8 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cony,
Un essai en PJ avec :
VB:
Sub Remplit()
'Si tu retrouves dans le contenu des cellules de la colonne A de l'onglet Selection
'le nom de la colonne C de synth, alors, tu colles selection/colonne C en synth/colonne L.
DL = Application.CountIf(Sheets("Synth").Range("C:C"), "*")
For L = 2 To DL
    If Not IsError(Application.Match(Sheets("Synth").Range("C" & L) & "*", Sheets("Selection").Range("A:A"),0)) Then
        IndexS = Application.Match(Sheets("Synth").Range("C" & L) & "*", Sheets("Selection").Range("A:A"),0)
        Sheets("Synth").Range("L" & L) = Sheets("Selection").Range("C" & IndexS)
    End If
Next L
End Sub

Par contre le point étant flou concernant les résidus de csv, quand je trouve Dupond1 eric je considère que c'est Dupond1.
Sinon il suffit de remplacer :
Code:
Application.Match(Sheets("Synth").Range("C" & L) & "*", Sheets("Selection").Range("A:A"),0)
par
Application.Match(Sheets("Synth").Range("C" & L), Sheets("Selection").Range("A:A"),0)
 

Pièces jointes

  • Demo (Cony).xlsm
    68.5 KB · Affichages: 5

coni1983

XLDnaute Nouveau
Bonjour à vous deux,
Et merci!!
Le fichier de Sylvanu semble fonctionner (il va me falloir du temps pour tester les cas particulier sur le fichier d'origine).
Je jetterai aussi un oeil sur le tien Pierre Jean.

Ca va mettre super utile, à moi et à plein de gens ! Merci encore

Bon WE
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 977
Membres
103 078
dernier inscrit
diomy