Suppression de lignes et Affectation de caractères

fouggy

XLDnaute Junior
Bonjour à tout le Forum,

J'aurais besoin à nouveau de votre aide pour finaliser un travail en cours au travers de 4 mini-macros.

Macro 1 :
Dans un fichier Excel et dans chaque feuille existante (presque 1000), supprime toutes les lignes dont les cellules de la colonne "H" sont vides.

Macro 2 :
Dans un fichier Excel et dans chaque feuille existante (presque 1000), affecte le chiffre "0" en colonne "I" dans la cellule de la ligne correspondante lorsque tu rencontres le chiffre "0" en colonne "H" et une étoile ("*") en colonne "I" lorsque le chiffre est différent de "0" en colonne "H".

Macro 3 :
Dans un fichier Excel et dans chaque feuille existante (presque 1000), affecte le chiffre "0" en colonne "I" dans la cellule de la ligne correspondante lorsque tu rencontres le chiffre "1" en colonne "H" et une étoile ("*") en colonne "I" lorsque le chiffre est différent de "1" en colonne "H".

Macro 4 :
Dans un fichier Excel et dans chaque feuille existante (presque 1000), affecte le chiffre "0" en colonne "I" dans la cellule de la ligne correspondante lorsque tu rencontres le chiffre "0" ou "1" en colonne "H" et une étoile ("*") en colonne "I" lorsque le chiffre est différent de "0" ou "1" en colonne "H".

Voilà... Pas très compliqué a priori mais suffisamment pour que, perso, je galère sans aboutir.

Un grand merci par avance.
 

job75

XLDnaute Barbatruc
Bonjour fouggy,

Sans plus d'informations ceci est le minimum :
Code:
Sub Macro1()
'supprime les cellules réellement vides en colonne H
On Error Resume Next
Dim w As Worksheet
For Each w In Worksheets
    w.Range("A1", w.UsedRange).Columns(8).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Next
End Sub

Sub Macro2()
Dim w As Worksheet
For Each w In Worksheets
    With w.Range("A1", w.UsedRange).Columns(9)
        .FormulaR1C1 = "=IF(""""&RC[-1]=""0"",0,IF(ISNUMBER(RC[-1]),""*"",""""))"
        .Value = .Value
    End With
Next
End Sub

Sub Macro3()
Dim w As Worksheet
For Each w In Worksheets
    With w.Range("A1", w.UsedRange).Columns(9)
        .FormulaR1C1 = "=IF(""""&RC[-1]=""1"",0,IF(ISNUMBER(RC[-1]),""*"",""""))"
        .Value = .Value
    End With
Next
End Sub

Sub Macro4()
Dim w As Worksheet
For Each w In Worksheets
    With w.Range("A1", w.UsedRange).Columns(9)
        .FormulaR1C1 = "=IF(OR(""""&RC[-1]=""0"",""""&RC[-1]=""1""),0,IF(ISNUMBER(RC[-1]),""*"",""""))"
        .Value = .Value
    End With
Next
End Sub
A+
 

Jacky67

XLDnaute Barbatruc
Hello job75
Je nai pas du tout compris la même chose, je me trompe peut-être :oops:
Si j'ai bien compris ta démarche (macro4) par exemple, tu inscris la formule en colonne I
Or il y a une condition qui fait référence à cette colonne
**lorsque tu rencontres le chiffre "0" ou "1" en colonne "H" et une étoile ("*") en colonne "I" **
Je propose comme ci-dessous, mais comme dit...pas certain.
VB:
Sub Macro4()
'affecte le chiffre "0" en colonne "I" dans la cellule de la ligne correspondante
'lorsque tu rencontres le chiffre "0" ou "1" en colonne "H" et une ?toile ("*") en colonne "I"
'lorsque le chiffre est diff?rent de "0" ou "1" en colonne "H".
Dim w As Worksheet
For Each w In Worksheets
  w.Columns("XFD").Clear
   With w.Range("XFD1:XFD" & w.UsedRange.Rows.Count)
    .Formula = "=IF(AND(AND(OR($h1=0,$h1=1),$i1=""*"")+AND($h1<>0,$h1<>1)),0,$i1)"
    w.Columns("XFD").Copy
    w.[i1].PasteSpecial Paste:=xlPasteValues
  End With
w.Columns("XFD").Clear
Next
Quand penses-tu ?
 
Dernière édition:

fouggy

XLDnaute Junior
Merci à tous les deux Job75 et Jacky67,

Dsl si parfois je peux laisser traîner une ambiguité malgré mon souci permanent d'être le plus clair possible.

Et sur ce coup là, Job75 a parfaitement et exactement répondu à ma demande.

Un grand merci encore :) :) :)
 

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 117
dernier inscrit
augustin.morille