Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Boucle copie avec while et if

  • Initiateur de la discussion Initiateur de la discussion coni1983
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
634
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
354
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…