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 :

formule excel dans un code vb


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut formule excel dans un code vb
    bonjour j'ai un probleme je voudrais inserer une formule excel dans une boucle en vba

    par exemple
    dans la feuille xxx
    pour toutes les lignes pleine
    dans la colonne ae
    si ae1=ae2
    alors mettre 0 sinon mettre 1 dans les lignes respectives de la colonne af ( j'aimerai la mettre sous la formule excel)

    voila merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 40
    Par défaut
    je ne comprends pas très bien
    pour toutes les lignes pleine
    mais tu peux commencer avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Formule()
     
    Dim rCell As Range
     
        For Each rCell In Range("AE2:AE100").Cells
             rCell.FormulaLocal = "=SI(" & rCell.Offset(-1, -1).Address & "=" & rCell.Offset(0, -1).Address & ";0;1)"
        Next rCell
     
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    alors merci pour ta réponse et il semble qu'elle fonctionne cela dit j'aimerai bien comprendre le alors les lignes pleines correspondent à toutes les lignes remplies enfaite je veux donner comme instruction "parcours la colonne jusqu'a ce que tu me trouve une cellule vide "
    merci

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    une autre solution sans boucle (plus rapide si tu manipules beaucoup de lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Formule()
     
    Dim derlg  As Long
    derlg = Range("AE" & Rows.Count).End(xlUp).Row
    Range("AF1").FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],0,1)"
    Range("AF1").AutoFill Destination:=Range("AF1:AF" & derlg), Type:=xlFillDefault
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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 éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    génial merci parcontre je vais être un peu chiant je voudrais savoir comment l'appliquer sur plusieur feuilles simultanement

    j'utilise la formule suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Formule()
     
    Dim derlg  As Long
    Dim sh As Worksheet
     
    For Each sh In Worksheets(Array("AAR35", "AAR", "RST", "PCH", "EXP DIF"))
     
    derlg = sh.Range("AE" & Rows.Count).End(xlUp).Row
    sh.Range("AF2").FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],0,1)"
    sh.Range("AF2").AutoFill Destination:=sh.Range("AF1:AF" & derlg), Type:=xlFillDefault
    Next sh
     
    End Sub
    pourquoi ça marche pas?

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je n'ai pas vérifié pour le Array mais change cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlg = sh.Range("AE" & Rows.Count).End(xlUp).Row
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlg = sh.Range("AE" & sh.Rows.Count).End(xlUp).Row
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    apparemment ça ne change rien lors du debogage l'erreur semble provenir de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sh.Range("AF2").AutoFill Destination:=sh.Range("AF1:AF" & derlg), Type:=xlFillDefault
    donc voilà si ça peut t'aider

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Exact mais tu as mal regardé mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AF1").AutoFill Destination:=Range("AF1:AF" & derlg), Type:=xlFillDefault
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  9. #9
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    a oui oups je suis un peu trop distrait je pense lol

    un dernier truc donc en fonction de ce que je viens de faire c'est à dire l'affecation d'un 0 ou d'un 1 j'aimerais bien faire un tri dans cette colonne et selectionner les lignes contenant les 0 pour les supprimer d'un coup

    car quand j'utilise cette procedure

    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 cleaner()
        Dim sh As Worksheet
        Dim Ligne As Long
        For Each sh In Worksheets(Array("AAR35", "AAR", "RST", "PCH", "EXP DIF"))
            Ligne = sh.Range("ae" & sh.Rows.Count).End(xlUp).Row
            Do Until Ligne = 1
                If Application.CountIf(sh.Columns("AE:AE"), sh.Range("ae" & Ligne).Value) > 1 Then
                    sh.Range("a" & Ligne).EntireRow.Delete
                End If
                Ligne = Ligne - 1
            Loop
        Next
    End Sub
    les lignes se supprimes les unes apres les autres et donc la procédure est beaucoup plus longue à charger (2 min)

    donc si je selectionne une plage à partir d'un critere et que je supprime les lignes ou la plage d'un coup je pense que je vais gagner en temps

    et le tri me permettrait de les regrouper pour faire un

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Si tu fais un tri, la formule ne donnera plus le même résultat, il faut donc passer par les valeurs, donc après cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AF1").AutoFill Destination:=Range("AF1:AF" & derlg), Type:=xlFillDefault
    , tu remplaces par les valeurs et tu fais ton tri ensuite, soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AF1:AF" & derlg) = Range("AF1:AF" & derlg).value
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  11. #11
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    okok
    je vais essayer de faire un tri pour voir ce que ca donne

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Sans trier, essayes ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Formule()
     
    Dim derlg  As Long
    derlg = Range("AE" & Rows.Count).End(xlUp).Row
    Range("AF1").FormulaR1C1 = "=IF(RC[-1]=R[1]C[-1],0,1)"
    Range("AF1").AutoFill Destination:=Range("AF1:AF" & derlg), Type:=xlFillDefault
    Range("AF1:AF" & derlg) = Range("AF1:AF" & derlg).Value
    Range("AE1:AF1").AutoFilter
    ActiveSheet.Range("$AE$1:$AF$" & derlg).AutoFilter Field:=2, Criteria1:="0"
    ActiveSheet.Cells.SpecialCells(xlCellTypeVisible).Delete
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  13. #13
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    mais c'est genial ca
    par contre comme je fais pour les appliquer à toute les feuilles

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

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Je viens de m'apercevoir qu'en fin de compte, tu cherches à éliminer les doublons, dis-moi si j'ai tort, et si tu veux vraiment éliminer les doublons, il va falloir tout changer car la procédure ne pourra pas aller, commences par faire une recherche sur le site pour la gestion des doublons.

    Dis-moi tout
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: 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...)

  15. #15
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    oui effectivement c'est une suppression de doublons mais le problème c'est que bizarrement ca semble marché

    enfaite j'ai deja été dans la rubrique gestion des doublons mais le problème c'est que toutes ces procédures sont longues a chargé dans une feuille contenant des milliers de donnée

    je voudrais simplement une application qui supprime les doublons non pas ligne par ligne comme celle de la rubrique mais plutôt une procédure qui supprime les doublons (lignes) par tas d'où la formule excel avec 0 et 1 et la sélection des plage contenant dans la colonne AF le 0

    bon visiblement je ne vois pas le problème dans ce que tu m'aas dit précedemment il supprime en effet bien les doublons ceci dit un problème persiste:

    la procédure me supprime automatiquement la 1er ligne

Discussions similaires

  1. formule Excel dans VBA
    Par ninette24 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/07/2008, 15h31
  2. Formule excel dans une boucle
    Par kedas dans le forum Excel
    Réponses: 6
    Dernier message: 12/10/2007, 18h48
  3. [debutant] Traduite une formule excel dans access
    Par zelob dans le forum Access
    Réponses: 5
    Dernier message: 25/02/2006, 06h17
  4. inséré des formule excel dans VB
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/12/2005, 18h21

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