IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme pour tester avec if et elseif sous vba


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    CHU
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : CHU
    Secteur : Santé

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Par défaut Probleme pour tester avec if et elseif sous vba
    Bonjour à vous

    J'ai besoin de tester chaque ligne d'une seule colonne (plus de cinquante tests par cellule ) et de renvoyer le résultat de chaque ligne vers chaque ligne d'une autre colonne sur la même feuille EXCEL.

    J'ai essayé avec des SI mais j'ai été limité par excel (7 imbrication maxi) ,même en concaténant & les SI

    j'ai décidé de faire une macro VBA ,mais je suis un débutant ,je ne connais pas toutes les syntaxes
    Pour info ,je vous envoie ce que j'ai crée (pour une dizaine de tests ) ,mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    sub essai2()
     
    Dim i As Integer, Lne As Single
     
        'commencement à la ligne 10 de la colonne S
        For i = 10 To 50
            'si valeur de i de la colonne S égale la valeur à la valeur alors Lne = renvoie valeur en colonne AQ
            If Range("S" & i).Value = 10 Then Lne = 0
                ElseIf Range("S" & i).Value = 11 Then Lne = 0.1
                    ElseIf Range("S" & i).Value = 12 Then Lne = 0.2
                         ElseIf Range("S" & i).Value = 13 Then Lne = 0.3
                            ElseIf Range("S" & i).Value = 14 Then Lne = 0.4
                                 ElseIf Range("S" & i).Value = 14 Then Lne = 0.4
                                        ElseIf Range("S" & i).Value = 15 Then Lne = 0.5
                                                ElseIf Range("S" & i).Value = 16 Then Lne = 0.6
                                                        ElseIf Range("S" & i).Value = 17 Then Lne = 0.7
                                                            ElseIf Range("S" & i).Value = 18 Then Lne = 0.8
                                                                ElseIf Range("S" & i).Value = 19 Then Lne = 0.9
     
                Else
                    MsgBox ("Les cellules sont vide")
     
            End If
     
     
     
            Range("AQ10:AQ12") = Lne
        Next i
     
     
    End Sub
    Si quelqu'un peut m'aider cela serait cool

    Merci

  2. #2
    Membre éclairé Avatar de verredewhisky
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Janvier 2013
    Messages : 63
    Par défaut
    il y a pas un erreur de syntaxe dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AQ10:AQ12").value = Lne
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AQ10:AQ12") = Lne
    J'ai pas compris pourquoi t'as besoin de tous ces elseif et n'oublie pas d'activer la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    sub essai2()
     
    Sheets("thisFeuille").Activate
     
    Dim i As Integer, Lne As Single
     
    'commencement à la ligne 10 de la colonne S
    For i = 10 To 50
    'si valeur de i de la colonne S égale la valeur à la valeur alors Lne = renvoie valeur en colonne AQ
    If Range("S" & i).Value <>"" then 'ou une autre condition
     
    Lne = Range("S" & i).Value / 100
     
    Else
    'MsgBox ("Les cellules sont vide")
    End If
     
    Range("AQ10:AQ12").Value = Lne
    Next i
     
    End Sub

  3. #3
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    L'exposé de la problématique n'étant lui meme pas trés clair, la réponse ne peut etre que floue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub devellopez()
    Dim cell As Range
    'fais une boucle sur les celulles a tester, a1 puis a2 puis a3...
    For Each cell In Range("a1:a50")
    'fais une boucle sur les valeur a tester, 10 puis 11 puis 12...
        For i = 10 To 50
    'si la valeur de la cellule = 10 puis 11 puis 13...
            If cell.Value = i Then
    'on calcul la valeur a renvoyé en B
            Range("b" & cell.Row) = cell.Value / 10 - 1
            End If
        Next i
    Next cell
    End Sub
    Je ne suis pas sur d'obtenir le résultat escompté.
    Il faudrait nous en dire un peu plus sur les conditions a tester dans chaque cellules.

  4. #4
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Un autre resultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub devellopez()
    Dim cell As Range
    Dim i As String
    'fais une boucle sur les celulles a tester, a1 puis a2 puis a3...
    For Each cell In Range("a1:a50")
    'fais une boucle sur les valeur a tester, 10 puis 11 puis 12...
            If cell.Value = 10 Then
            i = "x"
             Else:
             If cell.Value = 11 Then
             i = "A"
              Else:
              If cell.Value = 12 Then
              i = "B"
               Else:
               If cell.Value = 13 Then
               i = "C"
                Else:
                If cell.Value = 14 Then
                i = "D"
                 Else:
                 If cell.Value = 15 Then
                 i = "E"
                  Else:
                  If cell.Value = 16 Then
                  i = "F"
                   Else:
                   If cell.Value = 17 Then
                   i = "G"
                   End If
                  End If
                 End If
                End If
               End If
              End If
             End If
            End If
    'etc....
     
    'on renvoi la valeur en B
            Range("b" & cell.Row) = "" & i
     
    Next cell
    End Sub
    C'est principalement le resultat à obtenir qui conditionne la façon dont on effectue les calculs.

  5. #5
    Invité
    Invité(e)
    Par défaut probleme pour tester avec if et elseif sous vba
    Bonjour,
    tu te complique la vie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case Range("S" & i).Value
        Case 10
            'Code ...
        Case 11
            'Code ...
    End Select

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/11/2006, 14h35
  2. Réponses: 1
    Dernier message: 29/04/2006, 22h08
  3. Réponses: 2
    Dernier message: 02/12/2005, 10h53
  4. Problème pour debuter avec glut
    Par ismael14 dans le forum GLUT
    Réponses: 2
    Dernier message: 26/07/2004, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo