XL 2010 Boucle for each 1ère d'une plage

cathodique

XLDnaute Barbatruc
Bonjour:),

J'ai défini une plage de cellule comme suit: Set Plage = Sheets("feuil1").UsedRange

Je voudrais faire une boucle for each des cellules de la 1ère colonne de cette plage.
Afin que je puisse supprimer les lignes ne contenant pas le mot "compte" ou numérique ou Alphanumérique.
En effet, certaines cellules contiennent des codes du style "411TOQUE", les chiffres toujours au début de la chaine.

Je ne sais pas si c'est possible de boucler sur une colonne précise d'une plage.

Merci beaucoup.;)
 

cathodique

XLDnaute Barbatruc
Bonsoir le fil, le forum, cathodique, Lone-Wolf

@cathodique
Sans fichier exemple, donc au pif... :rolleyes:
VB:
Sub a()
Dim p As Range, i&
Set p = ActiveSheet.UsedRange
For i = 1 To p.Columns.Count
If InStr("compte", Cells(1, i)) > 0 Then
Cells(1, i).EntireColumn.Delete
End If
Next
End Sub
Merci beaucoup Staple:),

Le fichier est reçu avec des cellules fusionnées, des entêtes et tableaux. Le but est de faire un nettoyage pour ne garder qu'un seul en-tête de tableau et les données des différents tableaux (fusionner les tableaux en un seul). Je ne peux joindre le fichier car il contient des données confidentielles.

Je vais essayer avec vos propositions de m'en sortir.

Je reviendrai pour vous mettre au courant.

bonne soirée.;)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

On n'a besoin du fichier original mais d'un fichier qui reproduit la structure de l'original.

Et d'éclaircissements sur tes explications
Je voudrais faire une boucle for each des cellules de la 1ère colonne de cette plage.
Afin que je puisse supprimer les lignes ne contenant pas le mot "compte" ou numérique ou Alphanumérique.
En effet, certaines cellules contiennent des codes du style "411TOQUE", les chiffres toujours au début de la chaine.
J'ai pas vraiment compris ce que tu veux dire

Mais avec un fichier exemple (avec deux onglets AVANT et APRES), pour ce qui me concerne, j'y verrai plus clair ;)
 

Staple1600

XLDnaute Barbatruc
Re,

C'est tout de suite plus simple avec le fichier ;)

VB:
Sub Macro1()
Dim Lig&
Application.ScreenUpdating = False
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Lig = Cells(Rows.Count, 1).End(xlUp).Row
Range("N9:N" & Lig).FormulaR1C1 = "=IF(LEFT(RC[-13],3)*1,""$"",0)"
Range("N9:N" & Lig).SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
Columns("N:N").ClearContents
Rows("1:7").Delete Shift:=xlUp
End Sub
 

cathodique

XLDnaute Barbatruc
Re,

C'est tout de suite plus simple avec le fichier ;)

VB:
Sub Macro1()
Dim Lig&
Application.ScreenUpdating = False
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Lig = Cells(Rows.Count, 1).End(xlUp).Row
Range("N9:N" & Lig).FormulaR1C1 = "=IF(LEFT(RC[-13],3)*1,""$"",0)"
Range("N9:N" & Lig).SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
Columns("N:N").ClearContents
Rows("1:7").Delete Shift:=xlUp
End Sub
Bonjour Staple:),

Je m'empresse pour te dire merci beaucoup. Je n'ai pas encore testé ton code. J'espère qu'il fonctionnera bien pour les prochains fichiers, car je ne connais leurs structures à l'avance (nombre de lignes). Surtout l’entête (le haut de la feuille), y aura-t-il 7 lignes ou plus ou moins de lignes, ça je ne le sais pas à l'avance. Je reviendrai aux nouvelles.

bonne journée.:):););)
 

cathodique

XLDnaute Barbatruc
Merci à vous tous. Mon problème est résolu.

@Staple1600 : C'est parfait merci beaucoup. Je n'avais pas pensé à ton astuce.
L’expérience fait toute la différence. J'avais commencé par défusionner les cellules, supprimer les lignes vides (range(a)=""), supprimer les colonnes vides, supprimer les doublons. Je me suis embraqué dans une suite de traitement. Alors que ton code est beaucoup plus simple.

Encore merci.:):):)

Bonne journée.
 

Discussions similaires

Réponses
2
Affichages
294

Statistiques des forums

Discussions
314 629
Messages
2 111 345
Membres
111 109
dernier inscrit
djameldel