Multiplier par 1 une range

Bonsoir à tous !

Afin de contextualiser, j'ai plusieurs feuilles dont je dois analyser les 1 et les 0 compris dans les mêmes cellules.

Le code demande donc de définir la plage en question et va ensuite vérifier les données de cette plage dans les autres feuilles afin de voir si elles correspondent.

Si c'est le cas, super pas d'erreur. Si ce n'est pas le cas, erreur.

Sauf que malheureusement, j'ai sur certaines feuilles des "1" qui sont en type texte, et qui ne correspondent donc pas au "1'" en type nombre.

Je souhaiterai donc que ma macro, lorsqu'elle sélectionne la range, multiplie également les cellules comprises dans cette range et dans toutes les feuilles par 1.

En multipliant par 1 toutes les cellules à checker, ces "1" en type texte deviendront type nombre.

J'ai pensé utiliser "Operation:=xlMultiply" mais j'ai du mal à l'incrémenter dans mon code.
Auriez-vous des idées ?

Merci d'avance et bonne soirée.

Sub checkDifferences()
    Dim wS1 As Worksheet, wS2 As Worksheet, rge As Range
    Dim x1 As Integer, x2 As Integer, y1 As Integer, y2 As Integer
    Dim i As Integer, j As Integer, k As Integer, nbSheets As Integer
    Dim errors() As Integer, totalErrors As Integer, result As String

    nbSheets = ThisWorkbook.Sheets.Count
    ReDim errors(nbSheets) ' On va stocker dans un tableau le nb d'erreurs par feuille

    'récupération de la plage à tester
    On Error GoTo ERR
    Set rge = Application.InputBox("", "Select the range to verify", , , , , , 8)
    If rge.Cells.Count <= 1 Then
        GoTo ERR
    End If
    On Error GoTo 0

    With rge
        x1 = .Column ' Gauche
        x2 = x1 + rge.Columns.Count - 1 ' Droite
        y1 = .Row ' Haut
        y2 = y1 + rge.Rows.Count - 1 ' Bas
    End With

    ' Triple boucle
    Application.ScreenUpdating = False 
    Set wS1 = Sheets("Base") ' Feuille de base
    For k = 2 To nbSheets
        Set wS2 = Sheets(k)
        For i = x1 To x2
            For j = y1 To y2
                'ajout colorcoding du résultat
                If wS1.Cells(j, i) <> wS2.Cells(j, i) Then
                    wS2.Cells(j, i).Interior.Color = 255
                    wS1.Cells(j, i).Interior.Color = 12961221
                    errors(k) = errors(k) + 1
                    totalErrors = totalErrors + 1
                        Else
                wS2.Cells(j, i).Interior.Color = 12961221
                wS1.Cells(j, i).Interior.Color = 12961221
                End If
            Next j
        Next i
    Next k
    Application.ScreenUpdating = True

    ' Rapport d'erreurs
    result = "ERRORS FOUND : " & totalErrors
    If totalErrors = 0 Then
        result = result & "  :) !" & vbCrLf
    Else
        For i = 2 To nbSheets
            If errors(i) > 0 Then result = result & vbCrLf & "- " & Sheets(i).Name & " : " & errors(i) & " error(s)."
        Next i
    End If
    MsgBox result, vbInformation
    Exit Sub

ERR:
    MsgBox "Unvalide selection, select your range !", vbExclamation, "Error"
End Sub

Que donne

If val(wS1.Cells(j, i)) <> val(wS2.Cells(j, i)) Then

Cela fonctionne, merci beaucoup ! Vous êtes génial.

Génial...génial...la médaille du chien fidèle, oui !

Rechercher des sujets similaires à "multiplier range"