• Initiateur de la discussion Initiateur de la discussion lilianfred
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

lilianfred

Guest
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

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
 
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.
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
366
Réponses
7
Affichages
478
Retour