insertion de lignes suivant valeur

FILOU78180

XLDnaute Nouveau
Bonjour ,
je souhaiterai rajouter des lignes completes suivant la valeur d une cellule .J'ai vu déjà des forums sur ce point mais je vous avoue j ai pas pigé
je vosu envoie le lien de mon doc , merci d avance
 

Pièces jointes

  • cijoint.xlsx
    34.1 KB · Affichages: 66

Chris401

XLDnaute Accro
Re : insertion de lignes suivant valeur

Re

Ce nouveau fichier m'a fait trouver une erreur dans mon code pour les lignes ne devant pas être recopiées.

Code:
Sub InserLignes()
Application.ScreenUpdating = False
Dim lig As Long
    For lig = Cells(Rows.Count, 2).End(xlUp).Row To 3 Step -1       
        If Cells(lig, "R") > 1 Then
            Rows(lig + 1).Resize(Cells(lig, "R") - 1).Insert Shift:=xlDown
            Cells(lig, 1).Resize(Cells(lig, "R"), 18).FillDown
        End If
    Next lig
End Sub
Chris
 
Dernière édition:

FILOU78180

XLDnaute Nouveau
Re : insertion de lignes suivant valeur

KOOLL MERCI je ne sais pas comment te remercier , chapeau bas !
Toutefois j'aimerai te challenger ;)
Tu sais quand je te demande de faire une copie des lignes , je dois ensuite supprimer des croix pour qu'il n'en reste qu'une par ligne !Par exemple si tu m'a copié 2 lignes ce qui veut dire qu'il y a en tout 3 lignes identiques avec 3 croix dans chaque je dois supprimer deux croix dans chaque lignes afin d'en garder qu'une bien sur sur une colonne différentes.
Jr t ai mis des infos en plus dans le fichier , c'est du lourd mon ami !!
 

Chris401

XLDnaute Accro
Re : insertion de lignes suivant valeur

Re

Bon, ça doit être ça (je t'ai commenté le code) :
Code:
Sub InserLignes()
Application.ScreenUpdating = False
Dim lig As Long
Dim x As Integer, i As Integer
Dim c1 As Range

    For lig = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step -1 'De la dernière ligne de la colonne A (1) à la 1ère ligne à traiter(4)
        x = Cells(lig, "R") - 1 'R est la colonne indiquant le nombre de lignes à insérer
        If x > 0 Then 'Si la valeur de R-1 est supérieure à 0
            Rows(lig + 1).Resize(Cells(lig, "R") - 1).Insert Shift:=xlDown 'Ajout des x lignes
            Cells(lig, 1).Resize(Cells(lig, "R"), 18).FillDown 'Copie de la ligne vers les lignes insérées
                For i = 0 To x - 1
                    Set c1 = Range("E" & lig + i & ":Q" & lig + i).Find(1)  '1ère colonne de la plage F:Q contenant 1
                        Range(Cells(c1.Row, c1.Column + 1), Cells(c1.Row, "Q")).ClearContents 'Efface les 1 après la 1ère colonne contenant 1
                        Range(Cells(c1.Row + 1, c1.Column), Cells(c1.Row + x - i, c1.Column)).ClearContents 'Efface les 1 des lignes du dessous de la 1ère colonne contenant 1
                Next i
            End If
    Next lig
End Sub
Chris
 
Dernière édition:

FILOU78180

XLDnaute Nouveau
Re : insertion de lignes suivant valeur

HELLO chris
tout d'abord merci ça marche , je suis bluffé !!!J'ai une petite question !
tu as intégré le premier besoin dans cette macro ?
Comme j 'ai déjà travaillé avec ta première macro je ne veux pas la relancer celle ci complete.
Peux tu m'envoyer celle ou tu enlèves les croix ?
Pour mes prochaines analyses j'utiliserai la complète !
En tout cas j'ai vu que rien n'est impossible sur excel avec les macros , un seul mot BRAVO
 

FILOU78180

XLDnaute Nouveau
Re : insertion de lignes suivant valeur

RE HELLO chris
est i possible de rajouter une colonne avant la première colonne de 1, dans notre cas entre E et F avec l info du site ou est noté le 1 sur la colonne.
Par exemple , dans mon exemple 70.
Pour ce besoin là il devra être à la suite de l'ensemble des actions déjà fournies par toi .
Tu dois vraiment te demander à quoi cela sert :)
SI SI j'ai un métier :)
PS , pour info j'ai modifié ta macro car il y avait une erreur pardon , car en lisant tes commenatires ou tu disais première colonne de la plage F Q , dans la range de la formule tu avais mis F ! Tu vois que je lis tes commentaires ;)
 

FILOU78180

XLDnaute Nouveau
Re : insertion de lignes suivant valeur

HELLO CHRISS
je t envoie le fichier car cela ne marche pas sur un autre fichier tu peux regarder svp
 

Pièces jointes

  • NEW TESTE AGAIN .xlsm
    174.6 KB · Affichages: 34
  • NEW TESTE AGAIN .xlsm
    174.6 KB · Affichages: 39

Chris401

XLDnaute Accro
Re : insertion de lignes suivant valeur

Bonsoir

Alors, dans l'ordre :
PS , pour info j'ai modifié ta macro car il y avait une erreur pardon , car en lisant tes commenatires ou tu disais première colonne de la plage F Q , dans la range de la formule tu avais mis F ! Tu vois que je lis tes commentaires
C'est bien de lire les commentaires, mais sur ce coup ce n'est pas une erreur ! En effet, avec mes tests je me suis rendu compte que s'il y avait un 1 en colonne F il y avait un soucis. (ce que je ne trouve pas logique mais je me pencherai sur le problème plus tard)

tu as intégré le premier besoin dans cette macro ?
Comme j 'ai déjà travaillé avec ta première macro je ne veux pas la relancer celle ci complete.
Ben oui, elle est intégrée - Tu vas devoir relancer

est i possible de rajouter une colonne avant la première colonne de 1, dans notre cas entre E et F avec l info du site ou est noté le 1 sur la colonne.
Par exemple , dans mon exemple 70.
Tu parles bien de l'entête de la colonne (ligne 3) dans laquelle est noté le 1 ?

je t envoie le fichier car cela ne marche pas sur un autre fichier tu peux regarder svp
j'ai l info variable objet ou variable de bloc with non definie
Dans ce nouveau fichier il n'y a pas que des 1 mais également des 2 ; obligatoirement cela donne une erreur puisque le code cherche les 1. Est-ce qu'on peut trouver autre chose ?

Une fois la nouvelle colonne F remplie, tu garderas les colonnes G a S ou faut-il les supprimer ?

A te lire
Chris
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 841
Membres
103 972
dernier inscrit
steeter