Réchercher une valeur et insérer une ligne au dessus

ThomasEtMathilde

XLDnaute Nouveau
Hello à tous

J'ai un fichier de 30000 lignes. Je souhaiterai pouvoir trouver une procédure automatique (macro ?) qui insère dans mon fichier une ligne vierge au dessus de la ligne où il trouve la valeur que je cherche.
Exemple : excel doit chercher dans la colonne C, la valeur "Field Name". S'il la trouve en C4, il insère une ligne vierge en ligne.

C'est une histoire de insertrow ou un truc comme ça non ?

J'y connais tellement rien, suis désolée !

Laurence
 

PMO2

XLDnaute Accro
Re : Réchercher une valeur et insérer une ligne au dessus

Bonjour,

Une piste avec les codes suivants à copier dans un module standard
ATTENTION : faites l'essai sur une copie de votre classeur.
Code:
Sub PremiereOccurence()
Dim R As Range
Set R = ActiveSheet.[c1:c65536].Find(What:="Field Name", After:=[c65536], _
    LookAt:=xlWhole, MatchCase:=True)
If Not R Is Nothing Then Rows(R.Row).Insert
End Sub

Sub ToutesOccurences()
Dim R As Range
Dim Premier$
With ActiveSheet.[c1:c65536]
  Set R = .Find(What:="Field Name", After:=[c65536], _
    LookAt:=xlWhole, MatchCase:=True)
  If Not R Is Nothing Then
    Premier$ = R.Offset(1, 0).Address
    Do
      Rows(R.Row).Insert
      Set R = .FindNext(R)
    Loop While Not R Is Nothing And R.Address <> Premier$
  End If
End With
End Sub
1) la Sub PremiereOccurence insère une ligne vierge au-dessus de la 1ère occurence trouvée.
2) la Sub ToutesOccurences insère une ligne vierge au-dessus de toutes les occurences trouvées.
les 2 macros cherchent le mot ENTIER et sont sensibles à la casse (distinction des minuscules et des majuscules).

Cordialement.

PMO
Patrick Morange
 

O B

XLDnaute Nouveau
Re : Réchercher une valeur et insérer une ligne au dessus

Bonjour,

Une piste avec les codes suivants à copier dans un module standard
ATTENTION : faites l'essai sur une copie de votre classeur.
Code:
Sub PremiereOccurence()
Dim R As Range
Set R = ActiveSheet.[c1:c65536].Find(What:="Field Name", After:=[c65536], _
    LookAt:=xlWhole, MatchCase:=True)
If Not R Is Nothing Then Rows(R.Row).Insert
End Sub

Sub ToutesOccurences()
Dim R As Range
Dim Premier$
With ActiveSheet.[c1:c65536]
  Set R = .Find(What:="Field Name", After:=[c65536], _
    LookAt:=xlWhole, MatchCase:=True)
  If Not R Is Nothing Then
    Premier$ = R.Offset(1, 0).Address
    Do
      Rows(R.Row).Insert
      Set R = .FindNext(R)
    Loop While Not R Is Nothing And R.Address <> Premier$
  End If
End With
End Sub
1) la Sub PremiereOccurence insère une ligne vierge au-dessus de la 1ère occurence trouvée.
2) la Sub ToutesOccurences insère une ligne vierge au-dessus de toutes les occurences trouvées.
les 2 macros cherchent le mot ENTIER et sont sensibles à la casse (distinction des minuscules et des majuscules).

Cordialement.

PMO
Patrick Morange

Bonjour,

Merci pour votre tuto qui fonctionne à merveilles...
J'essaye d'optimiser la modification de notre tarif qui est très chronophage.
J'espère que vous pourrez m'aider :)
Comment faire pour insérer : au lieu d'une ligne vide, une ligne précise d'une autre feuille par exp: Feuil2!A1 : F1 (avec des données) ?

Cordialement OB
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 489
Messages
2 110 133
Membres
110 682
dernier inscrit
mgaudi