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 :

un code vba simple et pourtant?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut un code vba simple et pourtant?
    bonjour tout le monde
    je suis en excel 2003 et j'ai tenté ce code très simple et pourtant je ne comprends pas les résultats :
    quand je tape le code suivant : j'ai i = 13 comme résultat alors que je devrais avoir 14
    (la cellule L14C1 est vide , et la cellule L15C1 contient la valeur DP1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    i = 13
    s = 0
    Do While Cells(i, 1).Value Like "DP*"
    var = Cells(i, 4).Value
    s = s + var
    i = i + 1
    Loop
    Cells(7, 1).Value = i
    dés que je commente les lignes while et loop ça marche


    merci

  2. #2
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut
    Bonjour,

    c'est un peu normal 13 comme resultat vu que on entre jamais dans la boucle car Cells(i, 1).Value est vide ici.

  3. #3
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    merci Mimosa777 pour ta réponse
    au fait mon but est d'additionner les valeurs de la colonne 4 correspondants aux lignes compris entre 2 valeurs de cellules de la colonne1 commençant par DP
    je m'explique : par exemple ligne L15C1 = DP1 et L18C1 = DP2 et entre les 2 lignes les cellules sont vides . je voudrais obtenir la somme de L15C4+L16C4+L17C4

    etc pour DP3 DP4 ...

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 257
    Par défaut
    Est ce que c'est toujours 2 cellules vides entre DP1 et DP2 et aussi DP3 et DP4, etc.. sur lesquels tu veux faire la somme des cellules de la colonne 4 ?? ou y a t-il desfois plus que 2 cellules de vide entre tes DP* ?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 52
    Par défaut
    c'est aléatoire entre 2 DP* il peut y avoir 1, 2, 3, .. lignes
    c'est pour cela que je voulais faire un boucle

    merci

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    teste le code ci-dessous qui affichera également un message si le second DPx est manquant
    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 test()
    Dim Var1 As String, Var2 As String, i As Integer
     
    'boucle de la ligne 13 à la dernière ligne
    For i = 13 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 1) <> "" And Var1 = "" Then
            Var1 = Cells(i, 1).Value
            Var2 = Cells(i, 4).Address
        Else
            If Cells(i, 1) <> "" Then
                If Cells(i, 1) = Var1 Then
                    MsgBox "Somme des valeurs pour " & Var1 & vbLf & Application.WorksheetFunction.Sum(Range(Var2 & ":" & Cells(i, 4).Address))
                    Var1 = ""
                Else
                    MsgBox "il manque le second " & Var1 & ", le premier étant repéré en cellule " & Cells(Range(Var2).Row, 1).Address(0, 0), vbExclamation
                    i = i - 1
                    Var1 = ""
                End If
            End If
        End If
    Next
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  2. Application simple qui pourtant ne marche pas
    Par ThanosT dans le forum C
    Réponses: 8
    Dernier message: 30/09/2005, 21h02
  3. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  4. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55
  5. Réponses: 6
    Dernier message: 27/04/2005, 15h46

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