Insérer une ligne ou plus en fonction de la valeur de cellule

Fermé
Jiand Messages postés 5 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 4 mars 2016 - 11 janv. 2016 à 16:07
ccm81 Messages postés 10906 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 13 janvier 2025 - 11 janv. 2016 à 17:23
Bonjour ,

J'ai un tableau de données avec une colonne A qui contient une série de chiffres de [1 à 6] en répétition
En fonction de cette valeur j'aimerai insérer une ligne vide au dessus
Exemple :

If Cells(i, 1).Value = 2 Then Insérer une ligne vide au dessus
If Cells(i, 1).Value = 3 Then Insérer deux lignes vides au dessus

J'ai essayé de créer une Macro pour exécuter cette opération comme suite :

Sub Macro1()

Dim i As Integer
Dim x As Integer
Dim b As Integer

'Je voudrais faire cette opération de la ligne 4 jusqu'à 200
For i = 4 To 10
x = Cells(i, 1).Value
b = Cells(i, 1).Row

If x = 2 Then
ActiveSheet.Range("A" & b, "A" & b).EntireRow.Insert
End If

Next
End Sub

Le résultat quand j'exécute la Macro est une création de Ligne jusqu'à i=200 à partir de la première valeur =2 (pour le 1er exemple)

Pouvez vous m'aider un compléter ce script pour arrêter l'opération selon le nombre de ligne précis à insérer en fonction de la valeur x (qui se répète) . Donc cette opération doit se répéter en boucle à chaque fois en partant de la ligne 4 jusqu'à la ligne 200.

J'espère que j'ai pu être plus au moins clair sur ma problématique

Merci
Bien Cordialement

2 réponses

ccm81 Messages postés 10906 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 13 janvier 2025 2 429
11 janv. 2016 à 16:26
Bonjour

Avec ce que j'ai compris
http://www.cjoint.com/c/FAlpAuehUnI

Cdlmnt
0
Jiand Messages postés 5 Date d'inscription lundi 11 janvier 2016 Statut Membre Dernière intervention 4 mars 2016
11 janv. 2016 à 17:13
C'est super j'ai exécuté votre script et ça marche super j'ai rajouté les condition pour tt les valeurs de 2 à 6 :

Ma deuxième étape est de coller les valeur de A à K au niveau de la ligne vide rajoutée
Du coup j'ai pensé à rajouté :

If n = 2 Or n = 3 Or n = 4 Or n = 5 Or n = 6 Then
For k = 1 To n - 1
Rows(li).Insert
Range("A" & li & ":K" & li).Select
Selection.Copy
Next k
End If

Mais ça n'a pas l'air de marché ! Avez vous un idée ?
Merci bcp pour votre aide
0