Boucle sur Doublon
Bonsoir le Forum
Comment faire pour faire tourner une boucle mais qu'en fonction de certaines cellules remplies
Je cherche à remplir en colonnes "B" et "C" les cellules vides en fonction des doublons de la colonnes "A"
Si cellules en "B" et "C" vides pour une série de doublon alors reste vide
je place en pièce jointe un exemple à obtenir
D'avance je vous remercie pour votre aide et votre disponibilité
Bonsoir Eole, bonsoir le forum,
Essaie comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim S As String 'déclare la variable S (Sexe)
Dim DT As String 'déclare la variable DT (DaTe)
Set O = Worksheets("Base") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données en colonne 1 de TV (le propriétaire)
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For J = 0 To UBound(TMP) 'boucle 1 : sur tous les éléments J du tableau temporaire TMP
S = "": DT = "" 'initialise les variables S et DT
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) = TMP(J) Then 'condition 1 : si la donnée ligne I colonne 1 de la boucle 2 correspond à l'élément TMP(J) de la boucle 1
If TV(I, 2) <> "" Then 'condition 2 : si la donnée ligne I colonne 2 n'est pas vide
S = TV(I, 2) 'définit le sexe F
DT = CStr(DateSerial(Year(TV(I, 3)), Month(TV(I, 3)), Day(TV(I, 3)))) 'définit la date DT (convertie en texte)
Else 'sinon
O.Cells(I, 2).Value = S 'renvoie le sexe S dans la cellule ligne I colonne 2
O.Cells(I, 3).Value = DT 'renvoie la date DT dans la cellule ligne I colonne 3
End If 'fin de la condition 2
End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle 2
Next J 'prochain élément de la bouicle 1
End Sub
Il y a un soucis dans ton resultat car tu considères Hardou8 identique à Hardou9. Le code proposé les distingues comme deux propriétaires différents !?...
Bonsoir ThauThème
merci pour ton aide et ta disponibilité
je regarde ça demain
moi j'étais sur un truc comme ça
Sub DoublonsColonneTradi()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = [A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Cells(i, 2) = Cells(i - 1,2)
If Cells(i, 1) = Cells(i - 1, 1) Then Cells(i, 3) = Cells(i - 1, 3)
Next i
Application.Calculation = xlCalculationAutomatic
End Sub
mais çà ne marche pas
et oui il y a un quawk dans ma base
Salut eole, salut ThauThème,
mais cette macro fonctionne à merveille
Sub DoublonsColonneTradi()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = [A65000].End(xlUp).Row To 2 Step -1
If Cells(i, 1) = Cells(i - 1, 1) Then Cells(i, 2) = Cells(i - 1,2)
If Cells(i, 1) = Cells(i - 1, 1) Then Cells(i, 3) = Cells(i - 1, 3)
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
bonjour
boucle sur doublons a tester
mais HARDOU8 et HARDOU9 peuvent ils être considérés comme doublons?
A plus sur le forum
Bonjour le Forum
Bonjour ThauThème, m3ellem1 et papyg
Merci pour votre aide et votre disponibilité
Tout me va, la version de tableau temporaire de ThauThème me permet d'aller un peu plus loin dans la vision VBA merci à toi
Les versions suivantes sont bien également
Je clos le sujet encore merci à vous trois