Macro pour saut de ligne avec condition

jmast

XLDnaute Nouveau
Bonjour,

Je suis en stage de fin d'études, je travaille actuellement sur la création template pour une méthode d'analyse de risque. Je commence petit à petit à prendre en main les macros.

Voilà mon problème :
Je souhaite créer une macro permettant de sauter des lignes entre chaque risque.

En enregistrant le une macro à la main pour le saut de ligne. J'obtiens le code suivant (par exemple) :

Rows("10:10").Select
Selection.Insert shift=xlDown, CopyOrigin xlFormatFrontLeftOrAbove.

J'utilise une boucle pour parcourir le tableau et selon si la colonne "Numéro Risk" contient un chiffre alors je rajoute une ligne au dessus.

Voilà mon code :

Sub saut_ligne()

Dim saut_ligne As Variant
Dim lignedebutrisk_init As Long
Dim lignefinrisk As Long
Dim colonnerisknumber As Long

lignedebutrisk_init = Range("A1:M30").Find("#B13", LookAt:=xlWhole).Row
lignefinrisk = Range("A1:M30").Find("#B14", LookAt:=xlWhole).Row
colonnerisknumber = Range("A1:M30").Find("#B15", LookAt:=xlWhole).Column

For saut_ligne = lignedebutrisk_init + 1 To lignefinrisk
If Cells(saut_ligne, colonnerisknumber) <> "" Then
Cells(saut_ligne, colonnerisknumber).Select
Selection.Insert Shift:=xlDown
End If
Next saut_ligne

End Sub

Il faudrait que je remplace "Cells(saut_ligne, colonnerisknumber).Select" par Rows("valeur de saut_ligne: valeur de saut_ligne"). Je ne sais pas comment faire pour passer la valeur de ma variable en texte.

Si vous avez la clé à mon problème je suis preneur :)
 

Pièces jointes

  • saut_ligne.xlsm
    24.5 KB · Affichages: 75

Modeste

XLDnaute Barbatruc
Re : Macro pour saut de ligne avec condition

Bonjour jmast et bienvenue,

Qu'il s'agisse d'insérer ou de supprimer des lignes, il faut commencer par la fin (le bas de ton tableau) et "remonter" au fur et à mesure.
Ta boucle deviendrait donc quelque chose comme:
VB:
For saut_ligne = lignefinrisk To lignedebutrisk_init + 1 Step -1
    If Cells(saut_ligne, colonnerisknumber) <> "" Then
        Cells(saut_ligne, colonnerisknumber).EntireRow.Insert Shift:=xlDown
    End If
Next saut_ligne

Ceci dit, la question qui se pose est: Auras-tu toujours (et uniquement) à trouver les "#B13", "#B14" et "#B15"?? A ce stade ils te servent de points de repère ... mais qu'en sera-t-il par la suite?
 

jmast

XLDnaute Nouveau
Re : Macro pour saut de ligne avec condition

Je te remercie pour ton aide, c'est exactement ce que je voulais faire.

En effet, les balises #B13, #B14, etc... me servent de points de repères, je trouve ça très pratique.

Qu'entends tu par "qu'en sera-t-il par la suite?"
 

Modeste

XLDnaute Barbatruc
Re : Macro pour saut de ligne avec condition

Re-bonjour,

Je demandais (et me demandais):
Auras-tu toujours (et uniquement) à trouver les "#B13", "#B14" et "#B15"
Est-ce toi qui les ajoutes au fichier? Si le "#B13" (par exemple) figure dans ton code, pour la recherche de la ligne de départ, que faire si la fois suivante c'est "#B22" ou "#D61"? (adapter le code à la situation?) "#B14" marquera chaque fois la fin?

Bref peut-être y a-t-il moyen de simplifier un peu le code et/ou le rendre plus "universel", si on en sait plus sur la "structure" de ton fichier.
 

jmast

XLDnaute Nouveau
Re : Macro pour saut de ligne avec condition

Dans mon fichier (sur lequel je travaille), c'est moi qui fixe mes balises pour me repérer plus facilement dans les feuilles. Chaque balise correspond à une variable qui pointe sur une colonne ou ligne d'une feuille précise. Les balises sont donc fixes.

Je ne vois pas comment rendre le code plus simple ou plus "universel".
 

Modeste

XLDnaute Barbatruc
Re : Macro pour saut de ligne avec condition

re²,

Je ne vois pas comment rendre le code plus simple ou plus "universel".
Ma foi, moi non plus, si tu fixes toi-même les balises ;) c'était juste une question que je me posais au départ: on aurait aussi pu demander à Excel, via la macro, de trouver la dernière cellule non-vide de la colonne B, pour t'éviter de la repérer toi-même, y inscrire ta balise et ensuite la retrouver par macro.
Voilà l'origine de ma question!

@+
 

Discussions similaires

Réponses
12
Affichages
267
Réponses
2
Affichages
196

Statistiques des forums

Discussions
312 755
Messages
2 091 701
Membres
105 052
dernier inscrit
HAMOUD