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

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
 

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("D165536"), "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!!
 

alf43

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

bonjour le forum
 

Pièces jointes

  • test poule.xls
    38.5 KB · Affichages: 75
  • test poule.xls
    38.5 KB · Affichages: 80
  • test poule.xls
    38.5 KB · Affichages: 84

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
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…