Modification de cellule via VBA

Bonjour à tous,

Je souhaiterais modifier certaines cellules d'une base de donnée qui contient environ plusieurs feuilles et je souhaite passer par VBA.

J'ai écris le code ci-dessous mais j'ai une erreur type 13 ! Help please

Merci d'avance !

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--". 
Dim ws As Worksheet
Dim a As Variant
Dim i, j As Long

For Each ws In Worksheets

    a = ws.range("A1").CurrentRegion.Value

    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If a(i, j) = "--" Then
                a(i, j) = 0
            End If
        Next j
    Next i

Next

End Sub
8data.xlsm (507.52 Ko)

Bonsoir

si tu fait une boucle sur les feuilles (For Each..)

a = [A1].CurrentRegion.Value ---> peut-être qu'avec la feuille concernée et [A1].....

Bonsoir

si tu fait une boucle sur les feuilles (For Each..)

a = [A1].CurrentRegion.Value ---> peut-être qu'avec la feuille concernée et [A1].....

Merci pour ta réponse M12 cependant même en modifiant comme ci-dessous j'obtiens la même chose.. Erreur..

For Each ws In Worksheets

    a = ws.range("A1").CurrentRegion.Value

Bonjour,

Une suggestion ...

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If a(i, j) = "--" Then  Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Bonjour,

Une suggestion ...

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If a(i, j) = "--" Then  Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Bonjour Eric,

Merci pour votre réponse cependant il y a toujours le message d'erreur "Erreur d’exécution 13 : Incompatibilité de types"

Bonjour,

Ici, ça fonctionne bien. Ce qui veut dire que c'est une/des valeurs dans des cellules qui pausent problème.

Peux-tu fournir un échantillon dans lequel l'erreur survient ?

ric

Bonjour,

Ici, ça fonctionne bien. Ce qui veut dire que c'est une/des valeurs dans des cellules qui pausent problème.

Peux-tu fournir un échantillon dans lequel l'erreur survient ?

ric

J'ai rajouté un échantillon en PJ

Bonjour,

Désolé, j'aurai dû le voir la première fois, j'ai corrigé la fin mais pas la condition.

Correction ....

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i As Long, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If Cells(i, j) = "--" Then Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Bonjour,

Désolé, j'aurai dû le voir la première fois, j'ai corrigé la fin mais pas la condition.

Correction ....

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i As Long, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If Cells(i, j) = "--" Then Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Merci infiniment ric, tout fonctionne ! Excellente fin de soirée

ric

Bonjour,

Désolé, j'aurai dû le voir la première fois, j'ai corrigé la fin mais pas la condition.

Correction ....

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i As Long, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If Cells(i, j) = "--" Then Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Bonjour Ric,

Je pensais que le problème était réglé mais je n'avais pas fait attention à 1 détail. En effet, en appliquant la procédure, seulement la feuille active est modifiée et non le workbook dans son intégralité..

Bonjour,

J'ai testé sur un fichier comprenant plusieurs.

Il fallait ajouter sur quelle feuille (ws.cells....) opérer.

Sub test()
'Je souhaite modifier toutes les cellules qui contiennent "--".
Dim ws As Worksheet
Dim a As Variant
Dim i As Long, j As Long

For Each ws In Worksheets
    a = ws.Range("A1").CurrentRegion.Value
    For i = 1 To UBound(a, 1)
        For j = 1 To UBound(a, 2)
            If ws.Cells(i, j) = "--" Then ws.Cells(i, j) = 0
        Next j
    Next i
Next
End Sub

ric

Super ! Merci beaucoup Ric

Rechercher des sujets similaires à "modification via vba"