Macro ne s'exécute pas

CmzxNéné

XLDnaute Nouveau
Bonjour à tous,

Je suis perplexe sur le résultat d'une macro qui ne s'exécute pas.
J'ai créé cette macro par l'enregistreur d'une macro sous 2007 puis sous 2003 mais elle ne remplie pas sa fonction.
Je souhaite remplacer les FAUX par 0 et les VRAI par 1.
Ci-joint un fichier test.
Merci de votre aide.
Cdt
 

Pièces jointes

  • Test macro.xls
    37 KB · Affichages: 68
  • Test macro.xls
    37 KB · Affichages: 73
  • Test macro.xls
    37 KB · Affichages: 70

ballmaster

XLDnaute Occasionnel
Re : Macro ne s'exécute pas

Bsoir,

Une solution pourrait de t'enregistrer avec l'enregistreur de macro en train de faire la manip avec un xls 2003 (si tu l'as sous la main) et de visualiser le code.

Surement une méthode ou un objet qui n'est pas géré pas xls2003
 

dionys0s

XLDnaute Impliqué
Re : Macro ne s'exécute pas

Bonsoir CmzxNéné

remplacer VRAI/FAUX par 1/0

Code:
Sub Macro1()

        Cells.Replace What:="VRAI", Replacement:="1", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:="FAUX", Replacement:="0", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

remplacer 1/0 par VRAI/FAUX

Code:
Sub Macro2()

    Cells.Replace What:="1", Replacement:="VRAI", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:="0", Replacement:="FAUX", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub
 

dionys0s

XLDnaute Impliqué
Re : Macro ne s'exécute pas

bonsoir dionys0s,ballmaster,CmzxNéné

testé et ok
Code:
Sub test_faux()
Dim R As Range
For Each R In Range("C2:L16") ' Adapter la plage de cellules
If R.Value = False Then R = 0
If R.Value = True Then R = 1
Next R
End Sub

Bonsoir carcharodon-carcharias
Re Ballmaster

Bien plus digeste ce code. Je m'en souviendrai. Thanks.
 

Papou-net

XLDnaute Barbatruc
Re : Macro ne s'exécute pas

Bonsoir à tous,

Encore une autre solution :

Code:
Sub test_faux()
    For Each cel In Range("C2:L" & Range("A1").End(xlDown).Row)
      cel.Value = Replace(cel.Value, True, 1)
      cel.Value = Replace(cel.Value, False, 0)
    Next
End Sub

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Macro ne s'exécute pas

re

autre solution (aussi digeste;))
Code:
Sub test_faux()
    Dim R As Range
    For Each R In Range("C2:L16")    ' Adapter la plage de cellules
        Select Case (R)
        Case True
            R = 1
        Case False
            R = 0
        End Select
    Next R
End Sub
Edit : mes salutations Papou-net ( tu ne déclare pas tes variables ???)

Mes salutations également, carcharodon,

Si, je m'efforce, depuis peu il est vrai, de déclarer mes variables dans mes programmes.

Mais là, je me suis contenté de reprendre le module existant sans me poser d'autres questions existentielles (mdr).

Bien cordialement.
 

CmzxNéné

XLDnaute Nouveau
Re : Macro ne s'exécute pas

Bonjour à tous ceux qui ont posté une réponse (et aux autres, bien sûr !),

J'ai testé toutes les propositions mais aucune ne convient à mon souhait.
Il est vrai que je n'avais pas tout mentionné et ci-après mon rattrapage :

en premier lieu, je vous informe que la macro figurant sur le fichier joint a été faite directement par l'enregistreur des macros.
Lors de cette création, tout se déroulait normalement à l'écran.
Mais lorsque je lance la macro créée, la sélection de la feuille entière se fait mais pas les remplacements.

mon souhait ==> sélectionner toute la feuille puis remplacer uniquement les cellules où le mot est FAUX (totalité du contenu) par un 0 (zéro) et les cellules où le mot est VRAI (totalité du contenu) par un 1.
Je sais que les cellules vides sont considérées comme valeur FAUX mais il faut les laisser vides.
Ci-joint un fichier plus détaillé avec en jaune les cellules qui devraient être modifiées

Merci de votre aide.
Cdt
 

Pièces jointes

  • Test macro.xls
    38.5 KB · Affichages: 61
  • Test macro.xls
    38.5 KB · Affichages: 68
  • Test macro.xls
    38.5 KB · Affichages: 67
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Macro ne s'exécute pas

Bonjour à tous,
Bonjour CmzxNéné,

A question plus précise, réponse plus nette.

Voici donc une solution :

Code:
Sub Test()
Dim Cel As Range

For Each Cel In Range(Cells(2, 3), Cells(Feuil1.UsedRange.Rows.Count, Feuil1.UsedRange.Columns.Count))
  Select Case Cel.Value
    Case ""
    Case True
      Cel.Value = 1
    Case False
      Cel.Value = 0
  End Select
Next
End Sub

Espérant avoir répondu.

Cordialement.
 

Si...

XLDnaute Barbatruc
Re : Macro ne s'exécute pas

Re

2 autres macros à tester.
Code:
Sub True1False0()
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=True, Replacement:=1
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=False, Replacement:=0
End Sub

Sub testSi()
  Dim C As Range
  For Each C In Selection
    If C = False Or C = True Then C = -C
  Next
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Macro ne s'exécute pas

Re

2 autres macros à tester.
Code:
Sub True1False0()
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=True, Replacement:=1
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=False, Replacement:=0
End Sub

Sub testSi()
  Dim C As Range
  For Each C In Selection
    If C = False Or C = True Then C = -C
  Next
End Sub

Bonjour Si..., et bravo !

Ta 1ère solution est courte et précise, rien à dire.

Quant à la 2ème, elle met 0 dans les cellules vides, et ce n'est pas ce que veut CmzxNéné. Il faut la modifier comme suit :

Code:
Sub testSi()
  Dim C As Range
  For Each C In Selection
    If Not IsEmpty(C.Value) And C = False Or C = True Then C = -C
  Next
End Sub

Mais est-ce bien nécessaire, la 1ère est parfaite bien qu'on pourrait encore raccourcir le code, mais ce serait moins lisible :

Code:
Sub True1False0()
  Cells.SpecialCells(xlCellTypeConstants).Replace True, 1
  Cells.SpecialCells(xlCellTypeConstants).Replace False, 0
End Sub

Cordialement.
 

CmzxNéné

XLDnaute Nouveau
Re : Macro ne s'exécute pas

Bonjour à tous et merci pour vos conseils.
Après essais de toutes les propositions, j'adopte le code de Si... suivant qui correspond à mon attente :

Re

Code:
Sub True1False0()
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=True, Replacement:=1
  [B]Cells.SpecialCells(xlCellTypeConstants)[/B].Replace What:=False, Replacement:=0
End Sub

Merci et à la prochaine question.
CmzxNéné
 

Discussions similaires

Réponses
24
Affichages
413

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87