Erreur de syntaxe

J'ai corrigé mais si je mets la première ligne à zéro tout se met à zéro!

Dans le Else, j'ai écrit le code suivant :

     With Range(Cells(LgTablo(K), j + 1), Cells(LgTablo(K + 1), j + 1))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 2), Cells(LgTablo(K + 1), j + 2))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 3), Cells(LgTablo(K + 1), j + 3))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 4), Cells(LgTablo(K + 1), j + 4))
                .Formula = 0
                .Value = .Value
            End With

Si je comprend bien, dans ce code, je mets toutes les lignes égales à zéro quelques soit la valeur de AB modulo 5.

Sauf que je ne sais pas comment faire pour dissocier chaque ligne les unes des autres! Merci pour votre aide!

Bonjour

Soit tu vérifies si c'est un nombre

If Cells(LgTablo(K), j) <> 0 Then...

Soit tu vérifies une chaine de caractères

If Cells(LgTablo(K), j) <> "" Then...

Je ne sais pas ce qu'il faut que tu fasses

Pour la syntaxe du if je suis d'accord! Il faut vérifier que c'est bien un nombre!

Par contre ce sont les lignes de code en dessous qui mettent qui mettent les cases des quatre colonnes suivantes à zéro qui ne fonctionnent pas!

Si je mets la première ligne du bloc à zéro tout le bloc s'annule. Sauf que je veux tester ligne par ligne!

Bonjour

Donc dans le Else tu veux mettre les 4 colonnes à 0

Essayes

          Range(Cells(LgTablo(K), j + 1), Cells(LgTablo(K + 1), j + 4)).Value = 0

j'ai du mal m'exprimer! Je te fais un exemple :

AB AC AD AE AF

Ligne 8 : 1

Ligne 9 : 0

La colonne AB peut prendre des valeurs comprises entre 0 et 1 différentes pour chaque ligne.

Je veux que lorsque la cellule AB8 est nulle les cellules AC8, AD8, AE8 et AF8 soit égale à zéro.

Attention cela n'est un exemple simple! Concrètement je veux appliquer cela à toutes les colonnes AB modulo 5. Merci

Bonjour,

La condition qui provoque la mise à jour de toutes les lignes d’un bloc est établie avec la première cellule de ce bloc.

Exemple avec le bloc AB8 :AF90 qui est conditionnée par la valeur de AB8.

If Cells(8, 28) <> 0 Then 
           <Traitement 1 de toutes les lignes du bloc>
else
           <Traitement 2 de toutes les lignes du bloc >
end if

Si tu souhaites effectuer un traitement différencié par ligne, il faut que tu établisses une condition par ligne.

A+

Je vois ce que tu veux dire!

Mais je ne sais pas trop comment l'appliquer, afin de tester chaque ligne du bloc c'est à dire chaque cellule de la colonne AB modulo 5 compris entre LgTablo(K) et LgTablo(K+1).

Voici mon code là où j'en suis :

For K = 0 To UBound(LgTablo) Step 2
    For j = 28 To 238 Step 5
        If Cells(LgTablo(K), j) <> "0" Then
            With Range(Cells(LgTablo(K), j + 1), Cells(LgTablo(K + 1), j + 1))
                .Formula = "=C" & LgTablo(K) & "*" & Cells(LgTablo(K), j).Address(rowabsolute:=False, columnabsolute:=False)
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 2), Cells(LgTablo(K + 1), j + 2))
                .Formula = "=$D" & LgTablo(K)
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 3), Cells(LgTablo(K + 1), j + 3))
                .Formula = "=$E" & LgTablo(K)
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 4), Cells(LgTablo(K + 1), j + 4))
                .Formula = "=$F" & LgTablo(K)
                .Value = .Value
            End With

        Else
            Range(Cells(LgTablo(K), j + 1), Cells(LgTablo(K + 1), j + 4)).Value = 0

            With Range(Cells(LgTablo(K), j + 1), Cells(LgTablo(K + 1), j + 1))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 2), Cells(LgTablo(K + 1), j + 2))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 3), Cells(LgTablo(K + 1), j + 3))
                .Formula = 0
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), j + 4), Cells(LgTablo(K + 1), j + 4))
                .Formula = 0
                .Value = .Value
            End With
        End If

        With Range(Cells(LgTablo(K), "II"), Cells(LgTablo(K + 1), "II"))
            .Formula = "=AB" & LgTablo(K) & "+ AG" & LgTablo(K) & "+ AL" & LgTablo(K) & _
            "+ AQ" & LgTablo(K) & "+ AV" & LgTablo(K) & "+ BA" & LgTablo(K) & "+ BF" & LgTablo(K) & _
            "+ BK" & LgTablo(K) & "+ BP" & LgTablo(K) & "+ BU" & LgTablo(K) & "+ BZ" & LgTablo(K) & _
            "+ CE" & LgTablo(K) & "+ CJ" & LgTablo(K) & "+ CO" & LgTablo(K) & "+ CT" & LgTablo(K) & _
            "+ CY" & LgTablo(K) & "+ DD" & LgTablo(K) & "+ DI" & LgTablo(K) & "+ DN" & LgTablo(K) & _
            "+ DS" & LgTablo(K) & "+ DX" & LgTablo(K) & "+ EC" & LgTablo(K) & "+ EH" & LgTablo(K) & _
            "+ EM" & LgTablo(K) & "+ ER" & LgTablo(K) & "+ EW" & LgTablo(K) & "+ FB" & LgTablo(K) & _
            "+ FG" & LgTablo(K) & "+ FL" & LgTablo(K) & "+ FQ" & LgTablo(K) & "+ FV" & LgTablo(K) & _
            "+ GA" & LgTablo(K) & "+ GF" & LgTablo(K) & "+ GK" & LgTablo(K) & "+ GP" & LgTablo(K) & _
            "+ GU" & LgTablo(K) & "+ GZ" & LgTablo(K) & "+ HE" & LgTablo(K) & "+ HJ" & LgTablo(K) & _
            "+ HO" & LgTablo(K) & "+ HT" & LgTablo(K) & "+ HY" & LgTablo(K) & "+ ID" & LgTablo(K)
            .Value = .Value
        End With

        Cells(545, j + 1).Value = Application.Sum(Range(Cells(8, j + 1), Cells(543, j + 1)))
    Next j
Next K

Désolé pour le doucle poste :

je pensais à quelques choses du style :

If range (Cells(LgTablo(K),j),Cells(LgTablo(K+1),j))<> 0 then...

Mais cela ne fonctionne pas

Ou encore du genre :

With range (Cells(LgTablo(K),j),Cells(LgTablo(K+1),j)) 
    if . Value <>0 then
             action 1 
    Else 
             action 2
     end if
End With

Mais cela aussi ne fonctionne pas!

Bonjour

Si je comprends

Modifies tes formules

    For J = 28 To 238 Step 5
        If Cells(LgTablo(K), J) <> "" Then
            With Range(Cells(LgTablo(K), J + 1), Cells(LgTablo(K + 1), J + 1))
               .Formula = "=IF(" & Cells(LgTablo(K), J).Address(rowabsolute:=False) & "=0,0,C" & LgTablo(K) & " * " & Cells(LgTablo(K), J).Address(rowabsolute:=False, columnabsolute:=False) & ")"
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), J + 2), Cells(LgTablo(K + 1), J + 2))
                .Formula = "=IF(" & Cells(LgTablo(K), J).Address(rowabsolute:=False) & "=0,0,D" & LgTablo(K) & ")"
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), J + 3), Cells(LgTablo(K + 1), J + 3))
                .Formula = "=IF(" & Cells(LgTablo(K), J).Address(rowabsolute:=False) & "=0,0,E" & LgTablo(K) & ")"
                .Value = .Value
            End With
            With Range(Cells(LgTablo(K), J + 4), Cells(LgTablo(K + 1), J + 4))
                .Formula = "=IF(" & Cells(LgTablo(K), J).Address(rowabsolute:=False) & "=0,0,F" & LgTablo(K) & ")"
                .Value = .Value
            End With
        End If
        With Range(Cells(LgTablo(K), "II"), Cells(LgTablo(K + 1), "II"))

Merci beaucoup pour ton aide.

Rechercher des sujets similaires à "erreur syntaxe"