Insertion de plusieurs lignes en fonction d'une valeur avec une incrementation
Résolu
Ray974
Messages postés
51
Date d'inscription
Statut
Membre
Dernière intervention
-
Ray974 -
Ray974 -
Bonjour à tous,
Je suis nouvelle dans ce forum, j'ai besoin d'aide sur mon code VBA, je suis débutante et je suis bloquée.
Dans mon code, je veux insérer des lignes en fonction d'un nombre dans une cellule et je veux que quand j’insère la ligne qu'il me fasse une incrémentation de certains valeurs.
> Je suis bloquée sur l' incrémentation , j'arrive à mettre une ligne par ligne et je veux que par exemple dans une cellule j'ai le chiffre 5 et il me met par la suite 5 lignes.
> Voici le code
>
> Private Sub CommandButton2_Click()
>
>
> Application.ScreenUpdating = False
> Dim AJ As Long
> AJ = ActiveCell.Row
> With ActiveSheet
> .Rows(AJ).Insert shift:=xlDown
> .Rows(AJ).EntireRow.Hidden = False
> ' met les lignes en fonction de la cellule
'Sheets(1).Select
> 'Range("C6").Select
> 'i = Range("C6").Value
> 'Rows("7:" : 6 + i : "").Select
> 'Selection.Insert shift:=xlDown
> 'recopie les valeurs précedent dans la nouvelle ligne
> Application.Calculation = xlCalculationManual
> .Range("B" : AJ) = .Range("B" : AJ - 1).Formula
> .Range("C" : AJ) = .Range("C" : AJ - 1).Formula
> .Range("D" : AJ) = .Range("D" : AJ - 1).Formula
> .Range("K" : AJ) = .Range("K" : AJ - 1).Formula
> .Range("L" : AJ) = .Range("L" : AJ - 1).Formula
> .Range("M" : AJ) = .Range("M" : AJ - 1).Formula
> .Range("N" : AJ) = .Range("N" : AJ - 1).Formula
> ' je veux incrementer
> .Range("AD" : AJ) = .Range("AD" : AJ - 1).Formula + .Range("AD" : AJ - 1)
> End With
> Application.CutCopyMode = False
> Application.Calculation = xlCalculationAutomatic
> Application.ScreenUpdating = True
>
> End Sub
Merci d'avance pour votre attention et votre aide.
Je suis nouvelle dans ce forum, j'ai besoin d'aide sur mon code VBA, je suis débutante et je suis bloquée.
Dans mon code, je veux insérer des lignes en fonction d'un nombre dans une cellule et je veux que quand j’insère la ligne qu'il me fasse une incrémentation de certains valeurs.
> Je suis bloquée sur l' incrémentation , j'arrive à mettre une ligne par ligne et je veux que par exemple dans une cellule j'ai le chiffre 5 et il me met par la suite 5 lignes.
> Voici le code
>
> Private Sub CommandButton2_Click()
>
>
> Application.ScreenUpdating = False
> Dim AJ As Long
> AJ = ActiveCell.Row
> With ActiveSheet
> .Rows(AJ).Insert shift:=xlDown
> .Rows(AJ).EntireRow.Hidden = False
> ' met les lignes en fonction de la cellule
'Sheets(1).Select
> 'Range("C6").Select
> 'i = Range("C6").Value
> 'Rows("7:" : 6 + i : "").Select
> 'Selection.Insert shift:=xlDown
> 'recopie les valeurs précedent dans la nouvelle ligne
> Application.Calculation = xlCalculationManual
> .Range("B" : AJ) = .Range("B" : AJ - 1).Formula
> .Range("C" : AJ) = .Range("C" : AJ - 1).Formula
> .Range("D" : AJ) = .Range("D" : AJ - 1).Formula
> .Range("K" : AJ) = .Range("K" : AJ - 1).Formula
> .Range("L" : AJ) = .Range("L" : AJ - 1).Formula
> .Range("M" : AJ) = .Range("M" : AJ - 1).Formula
> .Range("N" : AJ) = .Range("N" : AJ - 1).Formula
> ' je veux incrementer
> .Range("AD" : AJ) = .Range("AD" : AJ - 1).Formula + .Range("AD" : AJ - 1)
> End With
> Application.CutCopyMode = False
> Application.Calculation = xlCalculationAutomatic
> Application.ScreenUpdating = True
>
> End Sub
Merci d'avance pour votre attention et votre aide.
A voir également:
- Insertion de plusieurs lignes en fonction d'une valeur avec une incrementation
- Fonction si et - Guide
- Partage de photos en ligne - Guide
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Insertion sommaire word - Guide
- Insertion liste déroulante excel - Guide
3 réponses
Bonjour,
C'est cette cellule qui donne le nombre de lignes??
Y a un bleme avec ceci entre autre:
Pourquoi de : ald &!!!!!!
Pourquoi une plage de code qui devrait vous servir est en commentaire??
'i = Range("C6").Value
C'est cette cellule qui donne le nombre de lignes??
Y a un bleme avec ceci entre autre:
'Rows("7:" : 6 + i : "").Select
Pourquoi de : ald &!!!!!!
Pourquoi une plage de code qui devrait vous servir est en commentaire??
Bonjour le forum,
Pouvez vous m'aider sur le complément de mon code?
J'ai réussi à mettre les lignes mais je n'arrive pas à copier la ligne précédente sur les lignes insérées et à faire une incrémentation sur un colonne.
Merci d'avance pour votre aide.
Merci.
Pouvez vous m'aider sur le complément de mon code?
J'ai réussi à mettre les lignes mais je n'arrive pas à copier la ligne précédente sur les lignes insérées et à faire une incrémentation sur un colonne.
Merci d'avance pour votre aide.
Application.ScreenUpdating = False
'déclaration des variables
Dim message As String, title As String
Dim nblg As Byte
Dim I As Long
I = ActiveCell.Row
'on prépare les infos pour le message box
message = "Entrez le nombre de lignes"
title = "Insérer lignes"
'demande le nombre de lignes à insérer
nblg = Application.InputBox(message, title, Type:=1)
'test pour sortir au cas ou l'utilisateur rentre 0 ligne
If nblg = 0 Then MsgBox "Le nombre de lignes est à zéro": End
'copie de la dernière ligne remplie
Rows(I).Copy
Rows(I).Resize(nblg, 1).Insert Shift:=xlShiftDown 'Insertion par copie des nouvelles lignes
Rows(I + 1).Resize(nblg).ClearContents 'on efface le contenu des lignes copiées pour avoir des lignes vierges
L = Range("U" & nblg)
LD = nblg + 1
LF = nblg + L - 1
NPF = 1
LD = LD - 1
LF = LF
For m = LD To nblg
Range("AG" & m) = NPF
NPF = NPF + 1
Next m
nblg = nblg + L
Range("B" & nblg & ":D" & nblg).Copy Range("B" & LD & ":D" & LF)
Range("L" & nblg & ":M" & nblg).Copy Range("L" & LD & ":M" & LF)
Merci.
Bonjour,
Ok, je regarde la chose
Ok, je regarde la chose
Sub test() 'd?claration des variables Dim message As String, title As String Dim nblg As Long Dim I As Long 'Application.ScreenUpdating = False I = ActiveCell.Row 'on pr?pare les infos pour le message box message = "Entrez le nombre de lignes" title = "Insertion lignes" 'demande le nombre de lignes ? ins?rer nblg = Application.InputBox(message, title, Type:=1) 'test pour sortir au cas ou l'utilisateur rentre 0 ligne If nblg = 0 Then MsgBox "Le nombre de lignes est ? z?ro": End 'copie de la derni?re ligne remplie LD = I + 1 LF = I + nblg Rows(LD & ":" & LF).Insert Shift:=xlShiftUp 'Insertion par copie des nouvelles lignes Range("B" & I & ":D" & I).Copy Range("B" & LD & ":D" & LF) Range("L" & I & ":M" & I).Copy Range("L" & LD & ":M" & LF) NPF = 1 LD = I LF = LF For m = LD To LF Range("AG" & m) = NPF NPF = NPF + 1 Next m End Sub
le range ("C6 ").value c'est un exemple . je veux le généraliser pour qu'il ne soit pas que sur c6
par exemple sur la ligne 2 j'ai 5 dans la cellule c2 et je veux qu'il m'insert 5 lignes par la suite et en copiant les informations d'avant.
Pour le Rows("7:" : 6 + i : "").Select je n'arrive a pas le faire pour que sa marche dans une ligne quelconque.
et les plages en commentaire ,je testais les codes
je veux le généraliser pour qu'il ne soit pas que sur c6
Tout a fait Thierry(connais pas le feminin), mais a quoi voyons nous que c'est une cellule aleatoire????
Pour le Rows("7:" : 6 + i : "").Select, ce n'est pas une ligne quelconque, mais pour que ca marche
ca devrait aller mieux et le select n'est necessaire
je réexplique, j'ai un bouton qui insère des lignes , je veux que quand j'appuis ce bouton qu'il m'insère des lignes et le nombre de lignes à insérer et donner par une cellule qui correspond. exemple j'ai une famille qui a 3 membres de personne dans le foyer . la cellule contient le chiffre 3 donc quand j'appuis sur le bouton d'insertion il m'insère les 3 lignes en recopiant certains éléments de la ligne précédente. C'est ce que j'ai essayé de faire dans le code que j'ai envoyé ça marche pas. il me met pas les lignes au bon endroit.
Sur que ce peut pas marcher.
Vous feriez mieux de mettre votre fichier à dispo pour que nous puissions comprendre d'ou sort la cellule qui donne le nombre de lignes à insérer.
Site pour partage, ci-joint.com ou mon-partage.fr
vous trouverez le fichier en cliquant sur ce lien. Ne tenez pas compte de la feuille(archives)
https://mon-partage.fr/f/rhMQYqvl/ .
Merci