Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

pascal21

XLDnaute Barbatruc
merci pour ton aide mais ça ne correspond pas exactement à ma demande
j'ai fais un code très sommaire qui fonctionne comme je l'entends, mis à part le temps de traitement très long pour 100 lignes alors pour 15000 !!!!
mes compétences ne me permettent pas de trouver la solution pour l'améliorer
je suis déjà surpris d'avoir réussi à faire une boucle qui fonctionne
 

pascal21

XLDnaute Barbatruc
merci pour ton aide mais ça ne correspond pas exactement à ma demande
j'ai fais un code très sommaire qui fonctionne comme je l'entends, mis à part le temps de traitement très long pour 100 lignes alors pour 15000 !!!!
mes compétences ne me permettent pas de trouver la solution pour l'améliorer
je suis déjà surpris d'avoir réussi à faire une boucle qui fonctionne
Code:
Sub efface_ligne()
Dim C As Range
Set plage = Range("ag3:ag100")
For Each C In plage
If C.Value = "VRAI" Then
C.Offset(0, -1).Value = ""
C.Offset(0, -6).Value = ""
  C.Offset(0, -7).Value = ""
  C.Offset(0, -8).Value = ""
C.Offset(0, -9).Value = ""
C.Offset(0, -10).Value = ""
     C.Offset(0, -11).Value = ""
      C.Offset(0, -12).Value = ""
       C.Offset(0, -13).Value = ""
        C.Offset(0, -14).Value = ""
   C.Offset(0, -15).Value = ""
    C.Offset(0, -16).Value = ""
    C.Offset(0, -17).Value = ""
     C.Offset(0, -18).Value = ""
      C.Offset(0, -19).Value = ""
       C.Offset(0, -20).Value = ""
      C.Offset(0, -21).Value = ""
   C.Offset(0, -22).Value = ""
    C.Offset(0, -23).Value = ""
    C.Offset(0, -24).Value = ""
     C.Offset(0, -25).Value = ""
      C.Offset(0, -26).Value = ""
       C.Offset(0, -27).Value = ""
   C.Offset(0, -28).Value = ""
     C.Offset(0, -29).Value = ""
      C.Offset(0, -30).Value = ""
       C.Offset(0, -32).Value = ""
comme vous popuvez le voir je ne sais pas comment on fait pour remplacer toutes ces lignes de code en une seule
j'ai essayé
C.offset(0,-6) , c.offset(0,-30).value =""
mais ça marche pas
 

Pièces jointes

  • effacer ligne si texte colonneA(2).xlsm
    20.6 KB · Affichages: 54
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re

Bein faudrait savoir, d'abord tu dit: j'aimerais effacer le contenu des lignes contenant uniquement du texte. Et bein, ma macro copie seulement les lignes qui ont une date.
Maintenant toi tu impose une condition sur une valeur texte C.Value = "VRAI"??? I Dont no.
 
Dernière édition:

pascal21

XLDnaute Barbatruc
j'aimerais effacer le contenu des lignes contenant uniquement du texte.
du texte oui mais dans la colonne A
il est possible que je me sois mal expliqué
quand on ecrit une demande, on a toujours (souvent) l'impression d'être assez clair car on à l'idée du truc dans la tête
dans le classeur n°2 il y a ce que je souhaite réaliser
à espérant une macro qui traite plus rapidement que mon code lol!!
 

Lone-wolf

XLDnaute Barbatruc
Re

Donc tu veux juste éffacer les lignes du tableau, c'est ça?? Si c'est le cas, alors

VB:
Option explicit
Sub Copier_Lignes_Date()
Dim i As Long

Application.ScreenUpdating = False

With Feuil1
For i = 3 To .Cells(Rows.Count, 1).End(xlUp).Row
If Not IsDate(.Cells(i, "A")) Then
.Cells(i, "A").ClearContents
Range(.Cells(i, "C"), .Cells(i, "AA")).ClearContents
.Cells(i, "AF").ClearContents
End If
Next i
End With
End Sub

 
Dernière édition:

pascal21

XLDnaute Barbatruc
oui c'est tout à fait ça
ton code fonctionne parfaitement
mais c'est comme avec le truc que j'ai bricolé le traitement est long
ça doit venir du fait qu'il faut tester chaque ligne l'une après l'autre
sinon dans mon classeur final les dates reviennent à espace régulier il y a peut être la moyen de jouer avec ça
date en ligne 4
en ligne 50
en ligne 96
etc...
 

Lone-wolf

XLDnaute Barbatruc
Pascal si tu as 60000 lignes dans ton tableau, explique moi comment tu veux les reporter en ligne 59 - 72 - 96 etc. , comme tu le dit??? . Reporte-les sur la feuille2, c'est plus simple non?? Et c'est plus rapide de copier seulement les lignes contenant des dates comme je l'ai fait avant ou je me trompe. De plus, le résultat final est le même non??
 
Dernière édition:

pascal21

XLDnaute Barbatruc
Pascal si tu as 60000 lignes dans ton tableau, explique moi comment tu veux les reporter en ligne 59 - 72 - 96 etc.
je n'ai que 15000 lignes
et les lignes sont 4 , 50 , 96 etc.....
ce qui fait un pas de 46 si je ne me trompe pas

non je ne peux pas les reporter sur une autre feuille
car en fait il s'agit d'effacer les données saisies dans le tableau à chaque changement d'année
mais de conserver le tableau vidé du contenu des colonnes a;c:aa;ag avec les nouvelles dates
il y a d'autres macros qui sont liées au contenu de la feuille, elles ne comprendraient plus ce qui arrive
je suis entrain d'essayer un code avec step , mais je ne trouve pas la bonne syntaxe
 

Lone-wolf

XLDnaute Barbatruc
Re Pascal

Nouvelle version. Et normal qu'elle soit un peu lente, avec 15000 lignes et 32 colonnes.
 

Pièces jointes

  • effacer ligne si texte colonnA1.xlsm
    2.9 MB · Affichages: 69
Dernière édition:

Discussions similaires

Réponses
3
Affichages
224
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…