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

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
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:

job75

XLDnaute Barbatruc
Bonjour Jacky67,

J''en pense que ce que fouggy a écrit est très clair.

Mais il aurait dû répéter "affecte" pour être encore plus clair :
et affecte une étoile ("*") en colonne "I" lorsque le chiffre est différent de "0" ou "1" en colonne "H".
Les macros 2 3 4 procèdent de la même logique : il y a bien sûr 2 conditions opposées à chaque fois.

A+
 

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…