VB: effectuer une procedure tant que c'est possible.

  • Initiateur de la discussion polpoye
  • Date de début
P

polpoye

Guest
bonjour,
Je cherche a savoir commment executer une procedure tant que c'est possible. Je m'explique.
J'ai exporté des données d'un tableur sous excel. Selon la longueur des données, je me retrouve avec un en-tête dans mes feuilles excel tous les X lignes ( comme le ferait une "impression" avec en-tête). Je cherche donc a enlever les entêtes qui s'insèrent automatiquement toutes les ~60 lignes des que je convertis mes fichiers... pour me faire une "BELLE" feuille de données brutes... HELP !!!

j'arrive a effacer le premier avec ce bout de code.... mais je voudrais qu'il se repéte dans la feuillle puisque le meme fichier "toto.xls" est mis a jour tous les mois et recois donc des lignes de données de longueur variables.... et que cet entete se trouve en fait a plusieurs lignes de ma feuille (ou qu'une seule fois)
******

Range("A1").Activate
Cells.Find(What:="1 case de la premiere ligne de mon en-tete invariante", After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
ligne = ActiveCell.Row

' efface toutes les lignes précédentes
Rows("1:" & ligne - 1).Select
'Range("B36").Activate
Selection.Delete Shift:=xlUp


*****
MERCI de m'aider
 
@

@+Thierry

Guest
=> DESTRUCTION DE LIGNES en fonction d'une string avec ou sans méthode "Find"

Salut Polpoye

Vraiment pas claire ton histoire.... Excel gère les en-tête en dehors de la feuille de calcul...

En fait, si je comprends tu recois des données qui contiennent une ligne toutes les X lignes que tu voudrais détruire....

Un exemple si cette en-tête est toujours placée dans la colonne A et contient la même string "Ceci est une ligne d'en-tête"

Sub KillEntete()
Dim CELL As Range

For Each CELL In Range("A1:A" & Range("A65535").End(xlUp).Row)
If CELL.Text = "Ceci est une ligne d'en-tête" Then
CELL.ClearContents
End If
Next CELL
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub


La méthode Find, peut être efficace aussi, mais attention ci tu cherches par exemple le mot "En-Tête"........... TOUTES les lignes qui contiennent ce mot seront détruite...

Un exemple avec find... sur une plage de A à E jusqu'à la dernière ligne vide de la colonne A :

Sub KillEnteteFind()
Dim CELL As Range
Dim c As Range
Dim Mot As String
Mot = "en-tête"

With Worksheets("Sheet1").Range("A1:E" & Range("A65535").End(xlUp).Row)
Set c = .Find(Mot, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.ClearComments
c.AddComment
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Columns("A").SpecialCells(xlCellTypeComments).EntireRow.Delete
End Sub

NB => ICI je m'appuie sur les COMMENTS... Donc attention si tu as des cellules qui contiennent des commentaires....

Bon Travail.......

Bon Week End à tout le monde
@+Thierry
 
P

polpoye

Guest
Re: => DESTRUCTION DE LIGNES en fonction d'une string avec ou sans méthode "Find"

merci beaucoup.... Pour des gens qui voudraient nous relire,
mon probleme etait de convertir des fichiers SAP vers Excel.... Cette exportation exporte les données mais la mise en forme en est perturbée... Toutes les X lignes, le document excel créé se retrouve avec des entêtes... qui sont en fait la reprise des champs d'en tete de la premiere page... or moi, je veux pas ces champs.... merci en tous cas....

un week end studieux m'attend.
bye
 

Discussions similaires

Réponses
18
Affichages
803

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly