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 ?
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).
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).
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) ?