insertion lignes aprés comptage doublons en colonne

alf43

XLDnaute Junior
rebonjour le forum,

j'ai besoin d'aide : je désire insérer des lignes dans un tableau en fonction du nombre de doublons compter dans une colonne.
si qq1 peut essayer de me comprendre avec info dans fichier joint
merci
:confused:
 

Pièces jointes

  • test poule.xls
    27 KB · Affichages: 90
  • test poule.xls
    27 KB · Affichages: 90
  • test poule.xls
    27 KB · Affichages: 89

Excel-lent

XLDnaute Barbatruc
Re : insertion lignes aprés comptage doublons en colonne

Bonsoir Alf43,

Pourquoi ne demande tu pas à la macro de faire le tri?

Si tu le veux, voici un exemple de code :
Code:
    Range("A3:B3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("A3") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal

Dans ta macro, je n'ai pas trouvé où tu insérais tes lignes!
Voici un exemple de code :

Code:
Dim NbLigneRajoute as byte 'variable indiquant combien il faut rajouter de ligne 1 - 2 ou 3 
Dim OuRajoute as Integer    'variable contenant le numéro de la première ligne à partir d'où insérer la(es) ligne(s)

   Rows(OuRajoute & ":" & OuRajoute + NbLigneRajoute - 1 ).Select
   Selection.Insert Shift:=xlDown
 

alf43

XLDnaute Junior
Re : insertion lignes aprés comptage doublons en colonne

slt excel lent ,

pour le tri j'ai déjà mis en forme dans mon fichier en dévelloppement:

Worksheets(x).Select
Rows("3:200").Select
Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Key2:=Range("B3") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom

par contre pour l'insertion je nage. j'essaie de jumeler un code de comptage de doublons avec un code Insert Shift:=xlDown mais je n'arrive pas à lui donner la variable calculée pour le nb de ligne.

seul pour un nbre et encore je plante :
nb = Application.WorksheetFunction.CountIf(Range("D1:D65536"), "6")

For i = Range("D65536").End(xlUp).Row To 2 Step -(4 - nb)

If Cells(i - 1, 4) <> Cells(i, 4) Then
ActiveSheet.Rows(i).Insert shift:=xlDown
End If
Next i

la logique de ton code est idem à la mienne en expliquant à la macro de boucler sur tous les doublons et de comparer avec mon nb de ligne max=4

en fait le but suivant est d'associer un publipost word avec ces données car je ne suis pas arrivé à créer des poules s'aggrémentant automatiquement en fonction du nombre nécessaire et se remplissant correctemnt en fonction du numéro de poule.

comme tu vois je m'amuse comme un fou !! loll:):):)
donc je vais essayer d'utiliser ton code d'adresse ...durdur!!
 

skoobi

XLDnaute Barbatruc
Re : insertion lignes aprés comptage doublons en colonne

Bonjour alf43, Excel-lent,


le "résultat désiré" ne correspond pas à ce que tu dis:

3- c'est là que je butte : je voudrais insérer un ligne vierge si le nombre de doublons est inférieur à 4 de la sorte : nb doublons=3 alors j'insère une ligne

tu parles bien de doublons de poids?
ou alors j'ai rien compris :confused:
 

alf43

XLDnaute Junior
Re : insertion lignes aprés comptage doublons en colonne

slt skoobi !!
non je m'exprime peut etre mal.
il s'agit de doublons dans la colonne des N° de poule
en fait la macro me donne un tri puis me classe les poids des poules conditionnée avec 4 valeurs au max puis change le N°.
pour réaliser mon publipostage ensuite j'ai fait au plus "simple" pour remplir, il cherchera les 4 premiers noms et ainsi de suite donc je dois décaler mes cellules pour qu'il trouve toujours 4 valeurs même nulle avec un même N° de poule .
oupsss! dur à expliquer!!
 

skoobi

XLDnaute Barbatruc
Re : insertion lignes aprés comptage doublons en colonne

Re,

Je te propose un autre code:

Code:
Sub test()
Dim ancpoids As Long, poids As Long, poule As Long, nbpoule As Long
poids = Range("A34").Value
poule = 1
nbpoule = 0
poids = Range("A3").Value
nouvpoids = Range("A3").Value
lig = 3
Do Until Cells(lig, 1).Value = ""
    If lig > 3 Then nouvpoids = Cells(lig, 1).Value
    If nouvpoids <= 1.1 * poids And nbpoule < 4 Then
        Cells(lig, 1).Offset(0, 1).Value = poule
        nbpoule = nbpoule + 1
        lig = lig + 1
    ElseIf nbpoule < 4 Then
        For I = 1 To 4 - nbpoule
            Cells(lig, 1).EntireRow.Insert
            Cells(lig, 1).Offset(0, 1).Value = poule
        Next
        lig = lig + 4 - nbpoule
        poids = Cells(lig, 1).Value
        poule = poule + 1
        nbpoule = 0
    Else
        poids = Cells(lig, 1).Value
        poule = poule + 1
        Cells(lig, 1).Offset(0, 1).Value = poule
        nbpoule = 1
        lig = lig + 1
    End If
Loop
End Sub

Bon test :)
 

alf43

XLDnaute Junior
Re : insertion lignes aprés comptage doublons en colonne

skoobi,
20/20 pour toi !!!
tu n'imagine pas l'épine que tu m'enlèves!!!
les premiers tests semblent ok
il me reste à valider avec plus de données.
je te remercie

je nageais avec des rows et xldown. je réussissais seulement a inserer une ligne et jamais une seconde si nécessaire.
enfin je vais pouvoir enchainer
au plaisir de t'avoir.
alf
 

Discussions similaires

Statistiques des forums

Discussions
312 182
Messages
2 086 004
Membres
103 086
dernier inscrit
jcreant