Insertion de ligne quand détection d'une phrase

Erakmur -  
 Erakmur -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Erakmur
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Erakmur
 
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
Erakmur
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
Erakmur
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Salut Eriic

le *1 définit un string de longueur fixe ici 1
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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