insertion de lignes suivant valeur

  • Initiateur de la discussion Initiateur de la discussion FILOU78180
  • 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 !

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

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:
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 !!
 
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:
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
 
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 😉
 
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
 
- 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

Retour