Insertion de ligne quand détection d'une phrase

Fermé
Erakmur - 23 déc. 2013 à 11:16
 Erakmur - 23 déc. 2013 à 18:41
Bonjour,

Je souhaitrai avoir une macro excel qui m'insère 20 lignes quand il détecte le terme "Consigne de sécurité et Environnement:" dans une cellule.

Quelqu'un peut-il m'aider ?

Cordialement
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 déc. 2013 à 12:15
Bonjour

Option Explicit
Const Col As Byte = 1 'colonne de travail
Const Cle As String = "Consigne de sécurité et Environnement:"

Sub insere_lignes()
Dim Derlig As Integer, Lig As Integer

Application.ScreenUpdating = False
Derlig = Columns(1).Find("*", , , , , xlPrevious).Row
For Lig = Derlig To 1 Step -1
If Cells(Lig, Col) Like "*" & Cle & "*" Then
Rows(Lig + 1 & ":" & Lig + 20).Insert
End If
Next
End Sub

sans précision de ta part, j'ai considéré que "Consigne de sécurité et Environnement:" pouvait être inclus dans d'autres mots
sinon, remplace
Cells(Lig, Col) Like "*" & Cle & "*"
par
Cells(Lig,Col)=Cle

0
Bonjour Michel,

http://cjoint.com/?CLxmT7comDD

Voici le fichier. Je n'ai pas réussi à faire fonctionner la macro. Cela se passe en colonne O. Je souhaiterai que 20 lignes soient insérées quand la phrase est détectée.

Cordialement
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 déc. 2013 à 13:35
La macro a été essayée avec succès avant de l'envoyer...

Pour la colonne O , O est la quinzième lettre de l'alphabet, donc...
0
J'ai appliqué ta macro mais rien ne se passe. Mes lignes ne sont pas insérées. Je parle bien de ligne insérées et pas de cellules insérées. Pour le problème de la colonne O, tu veux dire que je dois rentrer le nombre de la colonne et pas la lettre ?
0
http://cjoint.com/?CLxoG5NTUZl

Voilà le résultat que je souhaites obtenir. J'ai fais les 3 premiers Consigne de sécurité et Environnement: pour explication
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 23/12/2013 à 16:37
hé oui colonne "O" <===> colonne 15

D'autre part, il faut enregistrer ton classeur en classeur supportant les macros (.xlsm)
le déclenchement de la macro peut se faire par un bouton

Comme tu n'avais pas précisé le nombre de lignes >2000 :-(
j"ai utilisé une méthode plus rapide en bouclant que sur les cellules comportant le texte recherché dans la colonne
Mais je n'ai rien pigé à tes couleurs grises ou jaune: non précisé également, soit au total 3 imprécisions dans ta demande


Option Explicit
Const Col As String * 1 = "O" 'colonne de travail
Const Cle As String = "Consigne de sécurité et Environnement:"

Sub insere_lignes()
Dim Nbre As Integer, Lig As Integer

'fige le défilement de l'écran
Application.ScreenUpdating = False
' nombre de "cle" dans la colonne
Nbre = Application.CountIf(Columns(Col), Cle) ' nombre de "cle" dans la colonne
For Lig = 1 To Nbre
'recherche de la prochaine ligne contenant la clé
Lig = Columns("O").Find(Cle, Cells(Lig, Col), xlValues).Row
'insertion de 20 lignes
Rows(Lig + 1 & ":" & Lig + 20).Insert
Next
End Sub

A l'avenir Merci d'^tre précis dans tes demandes :o)
0
Bonjour,

Le code couleur c'est juste pour moi. Tu peux mettre tous en blanc si cela t'arrange. Ta macro fonctionne partiellement, elle s'arrête à la ligne 306. De plus, le décalage des lignes se fait dans le mauvais sens. je souhaitrai un décalage vers le Haut et pas vers le bas. Désolé pour les imprésisions.

Peux tu m'aider ?

Cordialement
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
23 déc. 2013 à 18:03
Bonjour à tous,

excusez cette intrusion, mais la curiosité me pique... ;-)

Salut michel
dans :
Const Col As String * 1 = "O" 'colonne de travail
pourquoi le * 1 ?
Je ne connais pas son rôle.
Merci et bonnes fêtes de fin d'années à tous.

eric

PS: ne zappe pas le message précédent
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 déc. 2013 à 18:10
Salut Eriic

le *1 définit un string de longueur fixe ici 1
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 8 mai 2024 7 216
23 déc. 2013 à 18:27
Ah, ok.
Tu es économes toi ;-) Sans doute des restes du temps ou la mémoire était rare et où il fallait optimiser à fond. J'aimais bien :-)
Merci, A+

eric
0