Ajouter des lignes en fonction d'une case

Bonjour,

Débutant sur les macros je viens chercher votre aide,

j'aurais besoin que des lignes se crées en fonction d'une case.

Pour être plus précis, il faudrait qu'à chaque fois que dans la colonne 4 on trouve "REMISE CARTE BANCAIRE" deux lignes vide se crée en dessous. Je vous joint le fichier exemple d'origine, ainsi que le résultat souhaité,

Merci à tous ceux qui prendront le temps de m'aider,

Bonsoir

Votre fichier en retour.

Cliquez sur le bouton placé sur la feuille pour exécuter le code

Si ok et terminé, lors de votre réponse veillez à clôturer le fil en cliquant sur le V vert à coté du bouton EDITER

Cordialement

20aideexcelmacro.xlsm (18.02 Ko)

Bonjour Tchoutch,

Je te propose ce fichier Excel :

À l'ouverture du fichier, la cellule active est en ligne 1 ; fais Ctrl Fin ➯ ça va en ligne 14 ; remarque bien ceci :

la dernière ligne est donc la ligne 14, et même si cette ligne est pour une "REMISE CARTE BANCAIRE", c'est

inutile d'ajouter 2 lignes en dessous puisqu'il y a déjà la place pour saisir des données.

Après exécution de la macro, tu pourras vérifier avec Ctrl Fin qu'il n'y a pas eu de ligne ajoutée

sous la dernière ligne de données.


Ctrl e ➯ travail effectué : ça ajoute 2 lignes vides sous chaque ligne "REMISE CARTE BANCAIRE"

SAUF si cette ligne est la dernière, car c'est inutile de le faire dans ce cas.


Alt F11 pour voir la macro, puis revenir sur Excel

⚠ Lis bien tous les commentaires du code VBA (en vert)

⚠ Dans cette instruction : dlig = dlig [b][color=#FF0000]+[/color][/b] (dlig > 3) le signe « + » n'est pas une erreur de frappe !

si dlig > 3, ça enlève 1 à dlig et tu ne dois surtout pas changer ce « + » en « - » !


Si besoin, tu peux me demander une adaptation.

Merci de me dire si ça te convient.

Cordialement

Bonjour

Ctrl e ➯ travail effectué : ça ajoute 2 lignes vides sous chaque ligne "REMISE CARTE BANCAIRE"

SAUF si cette ligne est la dernière, car c'est inutile de le faire dans ce cas.

Quelle importance dans un si petit code à faire et le demandeur ne précise pas si on termine par remise... ou pas

Cordialement

Bonjour Dan,

Tu as raison : ce n'est pas aussi important que ça ; c'était surtout à la fois pour faire cet exercice

avec une optimisation pointue et pour éviter d'insérer inutilement 2 lignes vides sous le tableau.

Tu a écrit :

le demandeur ne précise pas si on termine par remise... ou pas

Là aussi, tu as raison : le demandeur ne le précise pas ; la dernière ligne de son exemple contient

"REMISE CARTE BANCAIRE" ; c'est juste une coïncidence, et ce n'est pas forcé.


D'autre part, mon code VBA contient une sortie dès le début de la sub s'il n'y a aucune ligne

de données (dans l'exemple, la 1ère ligne de données est la ligne n° 3) :

Option Explicit

Sub Essai()
  Dim dlig&, lig&: dlig = Range("D" & Rows.Count).End(xlUp).Row: Application.ScreenUpdating = 0
  If dlig < 4 Then Exit Sub ' sortie si aucune ligne de données ; ou si une seule ligne de données,
  ' car c'est inutile d'ajouter 2 lignes sous la dernière ligne (REMISE CARTE BANCAIRE ou non)
  dlig = dlig + (dlig > 3) ' si dlig > 3, enlève 1 à dlig car job inutile pour dernière ligne
  For lig = dlig To 3 Step -1
    If Range("D" & lig) = "REMISE CARTE BANCAIRE" Then Cells(lig + 1, 1).EntireRow.Resize(2).Insert
  Next lig
  [A1].Select
End Sub

Sans optimisation, mon code VBA devient :

Option Explicit

Sub Essai()
  Dim dlig&, lig&: dlig = Range("D" & Rows.Count).End(xlUp).Row: Application.ScreenUpdating = 0
  If dlig < 3 Then Exit Sub ' sortie si aucune ligne de données
  For lig = dlig To 3 Step -1
    If Range("D" & lig) = "REMISE CARTE BANCAIRE" Then Cells(lig + 1, 1).EntireRow.Resize(2).Insert
  Next lig
  [A1].Select
End Sub

Cordialement,

dhany

Bonjour,

Super, merci beaucoup à tous, j'admire vos connaissances

Cordialement,

Rechercher des sujets similaires à "ajouter lignes fonction case"