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 :

remplacer formules excel par leurs résultats


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut remplacer formules excel par leurs résultats
    Bonjour à tous.

    Voici mon problème, j'ai un fichier excel qui comporte de la cellule C1 à la cellule IM1 des dates sur une année (du 01/01/2020 au 31/12/2020).
    J'ai de la cellule C23 à IM23, des formules qui me permettent d'obtenir un résultat.
    J'aimerais, à l'aide d'une maccro VBA remplacer les formules des cellules C23 à IM23 par leur résultats en dur si et seulement si les dates sont inférieures à la date du jour.

    Je suis débutant en VBA et j'avoue que toute aide est la bienvenue car je bloque la dessus depuis un moment.

    Merci d'avance à tous pour l'aide apportée.

    Cordialement,

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il est hautement conseillé d'avoir dans une même colonne la même formule donc avoir à la fois des formules et des constantes est une source de problème (recopie accidentelle d'une formule vers le bas par exemple.

    Ceci étant écrit, chacun est libre de ses choix. Voici donc deux exemples en VBA pour transformer une cellule contenant une formule par son résultat

    Exemple 1 en utilisant le Copier/Collage spécial-Valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With Range("B6")
     .Copy: .PasteSpecial Paste:=xlPasteValues
     End With
     Application.CutCopyMode = False
    Exemple 2 en utilisant la propriété Value
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     With Range("B6")
     .Value = .Value
     End With
    S'il faut parcourir la colonne entière et n'appliquer le résultat en constante sous condition, il faudra donc utiliser une structure répétitive (Boucle For..To...Next) et une décisionnelle (If)

    Exemple pour la plage B2:B21 de la feuille nommée Feuil1 si le résultat de la formule renvoie un multiple de 5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub T()
     Dim rng As Range
     Dim Cell As Range
     Set rng = ThisWorkbook.Worksheets("Feuil1").Range("B2:B21")
     For Each Cell In rng
       With Cell
         Debug.Print (.Value / 5) - (.Value \ 5)
         If (.Value / 5) - (.Value \ 5) = 0 Then .Value = .Value
       End With
     Next
     Set rng = Nothing: Set Cell = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut
    Merci Philippe pour votre retour.

    Donc si je comprends bien, pour les 2 premières méthodes (si j'ai 365 formules) je doit répéter cette macro 365 fois ce qui n'est vraiment pas pratique et risque de prendre pas mal de temps...

    N'y a t-il pas une solution plus simple?

    En ce qui concerne la 3ème méthode je n'ai pas du tout saisie...

    En tout cas, encore un grand merci pour retour.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Donc si je comprends bien, pour les 2 premières méthodes (si j'ai 365 formules) je doit répéter cette macro 365 fois ce qui n'est vraiment pas pratique et risque de prendre pas mal de temps...
    Mais non, j'ai bien expliqué dans la ligne qui précède l'exemple que j'ai donné à la fin
    S'il faut parcourir la colonne entière et n'appliquer le résultat en constante sous condition, il faudra donc utiliser une structure répétitive (Boucle For..To...Next) et une décisionnelle (If)
    C'est une boucle. Qu'il y ait 5 lignes ou 15000 et qu'il y ait une ou plusieurs colonnes à traiter c'est la même procédure. Il suffit d'étendre la plage à traiter
    Soit au lieu de Set rng = ThisWorkbook.Worksheets("Feuil1").Range("B2:B21") par exemple Set rng = ThisWorkbook.Worksheets("Feuil1").Range("I2:KLB15000")

    En ce qui concerne la 3ème méthode je n'ai pas du tout saisie...
    J'ai donné un exemple dont la condition doit être adaptée soit "si et seulement si les dates sont inférieures à la date du jour"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/06/2017, 10h32
  2. [XL-2003] Insertion de formule Excel par VBA mais par " "
    Par Sibuxian dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/05/2010, 13h47
  3. [Regex] Remplacer caractéres spéciaux par leurs correspondants "normaux"
    Par dragonfly dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/09/2008, 11h15
  4. Remplacer des cellules par leurs valeurs
    Par benoitbs dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2008, 12h21

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