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 :

Soustraction de deux colonnes avec tab. [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut Soustraction de deux colonnes avec tab.
    Bonjour,
    je veux tout simplement effectuer une différence entre les colonnes AE et AF. Et repertorier le résultat de la différence dans le colonne Z.
    Je précise que les cellules sont au format standart et de la forme suivante : xx/xx/xxxx.
    Mon code n'effectue pas correctement la différence entre ces deux colonnes. Est-ce un problème de format ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test4()
    Dim LastLig As Long, i As Long
    Dim Tb
    Application.ScreenUpdating = False
    With Worksheets(1)
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Tb = .Range("AC1:AF" & LastLig)
        For i = 2 To LastLig
            Tb(i, 1) = Val(Tb(i, 4)) - Val(Tb(i, 3)) + 1
        Next i
        .Range("AC1:AF" & LastLig) = Tb
    End With
    End Sub
    Merci d'avance !

  2. #2
    Membre éprouvé Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Points : 929
    Points
    929
    Par défaut
    Bonjour,

    Mon code n'effectue pas correctement la différence entre ces deux colonnes
    A quel niveau? C'est le code qui plante ou le résultat qui n'est pas celui attendu?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Le résultat attendu n'est pas le bon. J'obtiens des valeurs non-cohérentes lorsque je refais le calcul à la main et compare. Sinon le programme tourne bien.

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    de la forme suivante : xx/xx/xxxx.
    Si ce sont des dates, essayes comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tb(i, 1) = CDate(Tb(i, 4)) - Cdate(Tb(i, 3)) + 1
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Nop, ça ne marche pas. Le programme plante, je pense qu'il faudrait ajouter une ligne qui change le format de cellule (standart => date). Et ensuite appliquer ton bout de code ou utiliser DATDIFF.

  6. #6
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut soustraction de deux colonnes evec table
    bonjour,

    le code marche très bien.
    il n'y a pas à ce soucier du format des cellule ou sont inscrites les dates. le seul fait d'écrire 01/01/12 fait passer la cellule au format date.

    quant au résultat : il est en jours sur une cellule au format standard

    ci-joint le code que j'ai adapté pour ne pas faire un essai en ae af


    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 test4()
    Dim LastLig As Long, i As Long
    Dim Tb
    Application.ScreenUpdating = False
    With Worksheets(1)
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        Tb = .Range("A1:b" & LastLig)
        For i = 2 To LastLig
            Cells(i, 3) = Tb(i, 2) - Tb(i, 1) + 1
        Next i
        .Range("A1:b" & LastLig) = Tb
    End With
    End Sub
    cordialement.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Il n'y aucun changements par rapport au code précédent .
    Si ce n'est que tu as enlevé le value() et adapté le code aux colonnes qui correspondent aux données de ton fichier. En l'occurence, les miennes ne se trouvent pas en A et B. Pour moi le code tourne bien également mais les résultats ne sont pas corrects. Ils sont entiers mais en re-faisant le calcul à la main je n'obtiens pas la bon résultat de la soustraction des deux sommes du nombre de jours.

    En fait le résultat ne prend pas en compte le mois. C'est à dire que si l'on a :
    22/07/2011 - 20/04/2011 = 2.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test4()
    Dim LastLig As Long, i As Long
    Dim Tb
    Application.ScreenUpdating = False
    With Worksheets(1)
    LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
    For i = 2 To LastLig
    If IsDate(Cells(i, 32)) And IsDate(Cells(i, 31)) Then Cells(i, 29) = DateDiff("d", Cells(i, 31), Cells(i, 32)) + 1
    Next i
    End With
    End Sub
    MERCI TOUT DE MEME !

  9. #9
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut soustraction de deux colonnes evec table
    Bonjour,

    Avec le code que je t'ai remis et les valeurs particulières que tu soumets (20/04/11 et 22/07/11), je trouve 94 jours et non pas 2.
    le code final que tu retiens donne le même résultat.
    Ma version Excel est 2010.

    Bizarre, bizarre !

    cordialement

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 83
    Points : 60
    Points
    60
    Par défaut
    Oui sans doute une différence qui se fait au niveau de la version.
    Pour ma part, je joue sur 2003.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/03/2015, 16h01
  2. Insérer un champ dans deux colonnes (avec fonction)
    Par tjacqmain dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 13/03/2012, 09h29
  3. concaténer deux colonnes avec séparateur ', '
    Par briceg dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 23/10/2009, 11h33
  4. Réponses: 4
    Dernier message: 05/06/2008, 09h51
  5. [VBA-E] Pb Comparaison De Deux Colonnes Avec Fonction If
    Par gromorice dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/03/2007, 05h57

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