Limite codage

lilianfred

XLDnaute Nouveau
Bonsoir à tous

J'ai créé un dossier EXCEL et j'ai essayé de trouver en code VBA un moyen de rechercher si la valeur d'une case est égale à une variable connue, alors la valeur de la case de gauche est réécrite dans une autre colonne.

Cela fonctionnait bien mais dès que je dépasse un nombre de ligne de codage, EXCEL trouve une erreur qui n'existe pas.

Y-a-t-il un nombre maxi de ligne de code en utilisant "IF ... Then ... End If" ?

Voici pour exemple le dossier qui ne veut pas fonctionner.

Merci pour votre aide.

Bonne soirée

Lilianfred
 

Pièces jointes

  • Classeur1 (2).xls
    229 KB · Affichages: 54
  • Classeur1 (2).xls
    229 KB · Affichages: 50
  • Classeur1 (2).xls
    229 KB · Affichages: 54

Fred0o

XLDnaute Barbatruc
Re : Limite codage

Bonsoir lilianfred,

Tu avais écrit "End" au lieu de "End If" à la fin de la Sub "CommandButton3_Click".

J'en ai profité pour réécrire un peu la sub "CommandButton1_Click".
 

Pièces jointes

  • lilianfred_V1.xls
    184.5 KB · Affichages: 40

lilianfred

XLDnaute Nouveau
Re : Limite codage

Bonsoir Fred0o

La simplification de la sub "CommandButton1_Click" est intéressante. Mais, lorsque je veux lancer la macro j’obtiens un message d'erreur "Next Sans For". Or, je ne vois pas d'erreur.

En tout cas, merci pour le coup de main

Lilianfred
 

Papou-net

XLDnaute Barbatruc
Re : Limite codage

Bonsoir lilianfred, Fred0o,

Il manque un End If à la fin du End Select :

Code:
...
...
Case Cells(l, c) = "Af": ActiveSheet.Range("I132") = ActiveSheet.Cells(l, c - 2)
                Case Cells(l, c) = "Ag": ActiveSheet.Range("I133") = ActiveSheet.Cells(l, c - 2)
            End Select
          End If
        If Cells(l, c) = "A+B" And Cells(l, (c - 1)) <> "A" Then
            ActiveSheet.Range("I62") = ActiveSheet.Cells(l, c - 2)
...
...

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Limite codage

RE lilianfred,

Sur la base du fichier fourni par Fred0o, j'ai restructuré la condition Select Case de la façon suivante :

Code:
Private Sub CommandButton1_Click()
Dim l, c As Integer, Cel As String, dL As Byte, CelAdr As Range
    For l = 141 To 171
        c = ActiveSheet.Range("C139")
        If Cells(l, (c - 1)) <> "A" Then
            Cel = Cells(l, c).Value
            dL = IIf(IsNumeric(Right(Cel, 1)), Right(Cel, 1), 0)
            Select Case Cel
                Case Is = "A", "A1", "A2"
                  Set CelAdr = Range("I62").Offset(dL, 0)
                Case Is = "B"
                  Set CelAdr = Range("I65").Offset(dL, 0)
                Case Is = "C"
                  Set CelAdr = Range("I66").Offset(dL, 0)
                Case Is = "D", "D1", "D2"
                  Set CelAdr = Range("I67").Offset(dL, 0)
                Case Is = "E"
                  Set CelAdr = Range("I70").Offset(dL, 0)
                Case Is = "F", "F1", "F2", "F3"
                  Set CelAdr = Range("I71").Offset(dL, 0)
                Case Is = "G"
                  Set CelAdr = Range("I75").Offset(dL, 0)
                Case Is = "H", "H1", "H2"
                  Set CelAdr = Range("I76").Offset(dL, 0)
                Case Is = "I"
                  Set CelAdr = Range("I79").Offset(dL, 0)
                Case Is = "J", "J1", "J2"
                  Set CelAdr = Range("I80").Offset(dL, 0)
                Case Is = "K", "K1", "K2"
                  Set CelAdr = Range("I83").Offset(dL, 0)
                Case Is = "L", "L1", "L2"
                  Set CelAdr = Range("I86").Offset(dL, 0)
                Case Is = "M"
                  Set CelAdr = Range("I89").Offset(dL, 0)
                Case Is = "N"
                  Set CelAdr = Range("I90").Offset(dL, 0)
                Case Is = "O", "O1", "O2", "O3"
                  Set CelAdr = Range("I91").Offset(dL, 0)
                Case Is = "P", "P1", "P2", "P3"
                  Set CelAdr = Range("I95").Offset(dL, 0)
                Case Is = "Q", "Q1", "Q2"
                  Set CelAdr = Range("I99").Offset(dL, 0)
                Case Is = "R", "R1", "R2"
                  Set CelAdr = Range("I102").Offset(dL, 0)
                Case Is = "S"
                  Set CelAdr = Range("I105").Offset(dL, 0)
                Case Is = "T"
                  Set CelAdr = Range("I106").Offset(dL, 0)
                Case Is = "U", "U1", "U2", "U3"
                  Set CelAdr = Range("I107").Offset(dL, 0)
                Case Is = "V", "V1", "V2"
                  Set CelAdr = Range("I111").Offset(dL, 0)
                Case Is = "W", "W1", "W2"
                  Set CelAdr = Range("I114").Offset(dL, 0)
                Case Is = "X", "X1", "X2", "X3"
                  Set CelAdr = Range("I117").Offset(dL, 0)
                Case Is = "Y"
                  Set CelAdr = Range("I121").Offset(dL, 0)
                Case Is = "Z"
                  Set CelAdr = Range("I122").Offset(dL, 0)
                Case Is = "Aa"
                  Set CelAdr = Range("I123").Offset(dL, 0)
                Case Is = "Ab"
                  Set CelAdr = Range("I124").Offset(dL, 0)
                Case Is = "Ac", "Ac1", "Ac2"
                  Set CelAdr = Range("I125").Offset(dL, 0)
                Case Is = "Ad"
                  Set CelAdr = Range("I128").Offset(dL, 0)
                Case Is = "Ae", "Ae1", "Ae2"
                  Set CelAdr = Range("I129").Offset(dL, 0)
                Case Is = "Af"
                  Set CelAdr = Range("I132").Offset(dL, 0)
                Case Is = "Ag"
                  Set CelAdr = Range("I133").Offset(dL, 0)
            End Select
            CelAdr.Value = ActiveSheet.Cells(l, c - 2).Value
          End If
        If Cells(l, c) = "A+B" And Cells(l, (c - 1)) <> "A" Then
            ActiveSheet.Range("I62") = ActiveSheet.Cells(l, c - 2)
            ActiveSheet.Range("I65") = ActiveSheet.Cells(l, c - 2)
        End If
...
...
End Sub
Espérant avoir été utile.

Cordialement.
 

Pièces jointes

  • Copie de lilianfred_V1.xls
    224 KB · Affichages: 31

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR