VBA Excel Binarizer une colonne

Bonjour à tous,

Je recherche de l'aide pour un code en VBA.

Mon objectif et de rendre binaire une colonne non-binaire. Exemple :

image image

Voila ce que je voudrai obtenir.

Mon problème principal est que pour savoir ou sont les 0 ou les 1, il faut que compare un tableau (qui contient la colonne a rendre binaire) a des entiers.

Or le tableau et de type 8204 et donc quand je le compare à un entier ce me fait une erreur de type : mismatch error

Je ne vois pas de solution. Auriez vous la gentillesse de m'aider ?

Le code est join ci dessous (le module s'appel BinaireCase).

Bonne journée à tous.

Bonjour J_u_l_e_s, le forum,

Par formule en C2 (à tirer à droite puis en bas)...

=SI(CNUM(DROITE(C$1;1))=$A2;1;0)
5jules-formule.xlsx (10.42 Ko)

Cordialement,

Bonjour, merci pour votre réponse.

Effectivement ce code marche et je vous en remercie mais y'aurai t'il un moyen de l'intégrer dans un code VBA ?

Cordialement,

Jules

Re,

Merci pour le retour,

Peut-être ainsi alors...

Sub test()
 Dim i%, j%, dl%

 Application.ScreenUpdating = False

  With Sheets("Sheet1")
   dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To dl
     For j = 3 To 5
      .Cells(i, j) = IIf(.Cells(i, 1) = CDbl(Right(.Cells(1, j), 1)), 1, 0)
     Next j
    Next i
  End With
End Sub

Cordialement,

Merci beaucoup le code fonctionne !

Si vous le permettez j'aimerai vous poser une dernière question.

image

Dans la capture ci dessus, je compare une cellule d'un tableau de type 8204 (the computation of ' `vbArray + vbVariant') avec des entiers. Or comme ce n'est pas le même type, cela ne fonctionne pas (impossible de comparer une cellule du tableau avec des entiers alors que la cellule contient un entier).

Auriez vous une idée ?

Encore merci

Cordialement,

Jules

Bonjour tout le monde. Une petite fonction en VBA limitée à 8 bits.

8binaire.xlsm (20.39 Ko)

Bonjour à tous

.../...

Dans la capture ci dessus, je compare une cellule d'un tableau de type 8204 (the computation of ' `vbArray + vbVariant') avec des entiers. Or comme ce n'est pas le même type, cela ne fonctionne pas (impossible de comparer une cellule du tableau avec des entiers alors que la cellule contient un entier).....

Si le tableau "tablo" est de type 8204, c'est qu'il est mal initialisé :

quelque soit i, plage.Offset(i - 1, j - 1).Value2 ne donne pas le contenu d'une cellule de la plage. Essayer avec msgbox ....

Pour l'initialiser, il vaudrai mieux dans la boucle :

tablo(i, j) = plage.Cells(i, j).Value

A+

Re,

Bonjour AlgoPlus, Optimix,

@Jules:


Vous m'avez gentillement fournie un code permettant de rendre binaire une colonne. Je n'ai juste pas compris une ligne de code :

.Cells(i, j) = IIf(.Cells(i, 1) = CDbl(Right(.Cells(1, j), 1)), 1, 0)

Si cellule(i,1)=valeur numérique du dernier caractère de cellule(1,j) ,on écrit 1, sinon 0.

Donc pour C2: revient à écrire:

=SI(A2=CNUM(DROITE(C1;1));1;0)

Comment faire si on a plus de trois catégories ? Car le code est limité a 3

Sub test()
 Dim i%, j%, dl%, dercol%

 Application.ScreenUpdating = False

  With Sheets("Sheet1")
       dl = .Range("A" & Rows.Count).End(xlUp).Row '................dernière ligne utilisée
   dercol = .Cells(1, Cells.Columns.Count).End(xlToLeft).Column '...dernière colonne utilisée

    For i = 2 To dl
     For j = 3 To dercol
      Select Case .Cells(i, 1).Value
       Case Is = .Cells(1, j): .Cells(i, j) = 1
       Case Else: .Cells(i, j) = 0
      End Select
     Next j
    Next i
  End With
End Sub

Petite variante avec Select Case....


Cordialement,

Rechercher des sujets similaires à "vba binarizer colonne"