effacer ligne si cellule de la colonne A contient du texte

pascal21

XLDnaute Barbatruc
bonjour le forum
en colonne A j'ai des valeurs texte, des valeurs dates et des cellules vides
j'aimerais effacer le contenu des lignes contenant uniquement du texte dans cette colonneA
ainsi que les colonnes de chaque ligne correspondantes colonnes ("C:AA") et colonne ("AF")
j'ai besoin de ça à partir de la ligne 3 et jusqu'à la ligne 16110
merci pour votre aide
 

Lone-wolf

XLDnaute Barbatruc
Bonjour tout le monde :)

En PJ le fichier(Pascal) avec amélioration du temps de transfert, de 23 je suis passé à 13 sec en ajoutant quelques fameux Application.xxxxx .
 

Pièces jointes

  • effacer ligne si texte colonnA1.xlsm
    2.2 MB · Affichages: 34

pascal21

XLDnaute Barbatruc
bonjour à tous
merci de vous être penché sur mon problème
au final mon premier classeur vous a enduit en erreur
il s'agit bien d'alléger le tableau originel pour recommencer une nouvelle saisie tous les ans
mapomme ton code est très bien il est rapide mais, ca se recopie sur une autre feuille
ça n'est malheureusement pas ce que je souhaite comme résultat
dommage car tu as bien bossé sur le truc
j'ai regardé ton code il est trop complexe pour moi pour que j'arrive à le modifier pour obtenir ce que je souhaite
je précise ma demande
sur mon classeur final il s'agit d'effacer les données suivantes
A5:A47 C5:AA47 AG5:AG47
A51:A93 C51:AA93 AG51:AG93
A97:A139 C97:AA139 AG97:AG139
ETC.....
soit un pas de 46 si je ne me trompe pas
le code devrait être plus simple à réaliser mais plus rapide, je n'en sais rien
j'ai du mal avec la syntaxe lors de l'utilisation de step
autrement la solution brute serait d'écrire
range("A5:A47 ,C5:AA47 ,AG5:AG47").ClearContents
mais pour 15000 lignes çà risque d'être un peu lourd
 

JBARBE

XLDnaute Barbatruc
bonjour à tous

sur mon classeur final il s'agit d'effacer les données suivantes
A5:A47 C5:AA47 AG5:AG47
A51:A93 C51:AA93 AG51:AG93
A97:A139 C97:AA139 AG97:AG139
ETC.....
soit un pas de 46 si je ne me trompe pas
Re,
J'ai effectué la macro par pas de 46+1 :
Soit tu n'as pas regardé ma macro soit tu t'es mal exprimé !

Option Explicit

Sub supprimer()
Dim i As Long, j As Long, A As Long, D&
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
D = Timer
For i = 4 To 15000 Step 47
If Cells(i, 1) = "" Then Exit Sub
Range(Cells(i, 1), Cells(i + 45, 1)).ClearContents
Range(Cells(i, 3), Cells(i + 45, 27)).ClearContents
Range(Cells(i, 32), Cells(i + 45, 32)).ClearContents
If Cells(i + 46, 1).NumberFormat <> "m/d/yyyy" Then
MsgBox " Date mal placée " & Rows(i + 46)
Exit Sub
End If
Next i
MsgBox Format(Timer - D, "#,##0.00\ sec.")
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

Bonne journée
 

pascal21

XLDnaute Barbatruc
dans mon dernier message c'est bien le format que je souhaite
les lignes 48 49 50 94 95 96 140 141 142 etc....
ce qui fait une zone de la ligne 5 à 47 à effacer ensuite une zone de la ligne 48 à 50 à conserver une nouvelle zone de la ligne 51 à 93 à effacer etc....
il est possible que je me sois emmèlé les pinceaux quelque part dans mes explications
 

klin89

XLDnaute Accro
Bonjour à tous, :)

Pour revenir à la question initiale, on peut utiliser la méthode SpecialCells
VB:
Sub test()
Dim myAreas As Areas, i As Long
    Set myAreas = Sheets("feuil1").Columns(1).SpecialCells(2, 2).Areas
    'Sheets("feuil1").Columns(1).SpecialCells(2, 2).Select
    For i = 1 To myAreas.Count
        myAreas(i).Select
        myAreas(i).Offset(, 2).Resize(, 25).Select
        myAreas(i).Offset(, 31).Select
    Next
End Sub
klin89
 

Discussions similaires

Réponses
12
Affichages
252

Statistiques des forums

Discussions
312 316
Messages
2 087 177
Membres
103 491
dernier inscrit
bilg1