[RÉSOLU] Remplacer une Formule par une macro

aubelix

XLDnaute Impliqué
Bonjour à tous les amis du Forum.

Ma requête est la suivante:
J'ai construis une formule avec des SI, mais j'ai des erreurs.
Est-il possible d'automatiser cette formule en VBA ?
Ne pas avoir à la copier et faciliter la tâche lors de filtre etc...
D'autre part, j'ai un autre souci à savoir que je colorie des cellules
par macro en fonction de la valeur de la cellule. Mais s'il y'a une
cellule vide, macro s'arrête et ne continue pas son cycle.
J'ai plusieurs centaines de données. Voir le fichier joint, il est parlant.

Merci pour votre aide.
Cordialement.
 

Pièces jointes

  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 45
  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 49
  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 48
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour,

pour le si je l'ai revu : en D10 =SI(D10>$A$1;"x";SI(D10="SLV";"n";SI(($A$1-D10)>10;"J";SI(($A$1-D10)>3;"K";"L"))))
en VBA ça va être galère

Pour ne pas recopier la formule, si tu es en 2003 selectionne le tableau puis Données/liste/créer une liste : quand tu ajoue une ligne les formule se recopient automatiquement.

pour éviter les erreur en colonne K =SI(ESTERREUR(DATEVAL(TEXTE(D10;"jj/mm/aa")));"";AUJOURDHUI()-D10)

J'ai regardé la macro, elle va bien jusqu'au bout : dans le select c'est mieux d'ajouter "case is = "" " pour traiter les cellules non renseignées

je regarde le reste

GIBI
 

Pièces jointes

  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 47
  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 45
  • MISE_EN_COULEURS.xls
    93.5 KB · Affichages: 49
Dernière édition:

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour matinal à toi GIBI et du aux amis du Forum.
Merci pour ta réponse GIBI.

Je pense qu'il y'a un petit souci:
Si la date est en négatif, c'est le nombre de jours restants avant la date limite
par rapport à la date du jour.
Si tu prends la cellule D11, elle devrait contenir "J" elle est supérieure à 10 jours.
Réfère toi au décompte des jours cellules K10 à K460.

Merci pour ton aide.
Cordialement.
 

Pièces jointes

  • MISE_EN_COULEURS2.xls
    94 KB · Affichages: 52

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour à tous les amis du Forum.

La macro de coloriage fonctionne bien, mais
Pouvez-vous m'aider sur les conditions imbriquées sur la date de validité.
Affichage d'une lettre en fonction du nombre de jours restants.
J'ai tourné la formule dans tous les sens, le résultat escompté n'est pas bon.
Le calcul se fait en comparant la date du jour avec la date de validité
Si >10 jours alors = J
Si =9 jours et inférieur 3 alors = K
Si < 3 jours et égal à la date de validité alors = L
Si égal SLV alors = n
Si date de validité dépassée alors = x

Merci pour votre aide.
Cordialement.
 

ROGER2327

XLDnaute Barbatruc
Re : Remplacer une Formule par une macro

Bonjour à tous.


Bien que je ne sois pas certain d'avoir tout compris, je tente un essai :​
VB:
Sub MFC()
    Dim Statut As Range
    Dim i&, d&, v()

    Application.DisplayAlerts = False
    Names.Add "DATE_REF", [A1]
    With [K9]
        With Range(.Cells, .End(xlDown))
            Names.Add "Nb_jours_restants", .Cells
            Names.Add "STATUT", .Offset(, -7).Resize(.Rows.Count, 2)
        End With
    End With
    Application.DisplayAlerts = True

    d = Range("DATE_REF").Value
    Set Statut = Range("STATUT")
    v = Statut.Value
    Application.ScreenUpdating = False
    With Range("Nb_jours_restants")
        .Cells.Interior.ColorIndex = xlColorIndexNone
        For i = 2 To UBound(v)
            With .Cells(i).Interior
                If IsDate(v(i, 1)) Then
                    Select Case v(i, 1)
                    Case Is > d + 10: v(i, 2) = "J": .Color = vbGreen
                    Case Is > d + 3: v(i, 2) = "K": .Color = 49407
                    Case Is >= d: v(i, 2) = "L": .Color = vbRed
                    Case Is < d: v(i, 2) = "x": .Color = vbRed
                    End Select
                Else
                    Select Case v(i, 1)
                    Case "SLV": v(i, 2) = "n": .Color = vbYellow
                    Case Else: v(i, 2) = ""
                    End Select
                End If
            End With
        Next
    End With
    Statut.Value = v
    Application.ScreenUpdating = True

End Sub


Bonne nuit !


ROGER2327
#6695


Dimanche 8 Tatane 140 (Susception du Croc à Merdre - fête Suprême Seconde)
3 Thermidor An CCXXI, 0,9678h - melon
2013-W29-7T02:19:22Z
 

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour à toi ROGER2327 et tous les amis du Forum.

Merci pour ta réponse. Je l'ai testée elle fonctionne très bien sur le fichier exemple.
Mais sur mon fichier, j'ai un message d'erreur. Je te le joint en pièce attachée.
C'est la configuration exacte.
Merci pour ton aide.

Cordialement.
 

Pièces jointes

  • MISE_EN_COULEURS3.zip
    80.7 KB · Affichages: 27

ROGER2327

XLDnaute Barbatruc
Re : Remplacer une Formule par une macro

Re...


Bonjour à toi ROGER2327 et tous les amis du Forum.

Merci pour ta réponse. Je l'ai testée elle fonctionne très bien sur le fichier exemple.
(...)
Normal : la solution proposée correspond au problème posé.​


(...)
Mais sur mon fichier, j'ai un message d'erreur. Je te le joint en pièce attachée.
Normal : le problème posé n'est plus le même.

Dans le premier problème, il y avait une date de référence (en A1) à comparer aux dates de la colonne D. Ce n'est plus le cas dans le deuxième problème. Où se trouve maintenant cette date de référence ?

D'autre part apparaissent des chaînes de caractères en AA1:AB1. Ont-elles à voir avec le nouveau problème ? Si oui, à quoi servent-elles ?

Plus largement, quel est le problème dans ce nouveau classeur ?
(Merci d'avance de poser exactement le véritable problème à résoudre, plutôt que de poser un problème plus ou moins ressemblant.)


ROGER2327
#6699


Dimanche 8 Tatane 140 (Susception du Croc à Merdre - fête Suprême Seconde)
3 Thermidor An CCXXI, 5,9548h - melon
2013-W29-7T14:17:30Z
 

aubelix

XLDnaute Impliqué
Remplacer une Formule par une macro

Bonsoir à tous les Amis du Forum et à toi ROGER2327.

Merci pour temps que tu as consacré à mon problème
En A1, c'est la date du jour que j'ai ajoutée sur ma feuille.
Tout est rentré dans l'ordre. Ta macro fonctionne à merveille.

Les chaînes de caractères en AA1:AB1 n'ont aucun lien avec ce problème.
Encore une fois Merci ROGER2327 pour ton aide.
Cordialement.
 
Dernière édition:

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour à tous les amis du Forum.
Désolé, je me suis trompé de discussion. J'ai posté cette question sur une autre discussion.
Je reviens vers vous une fois de plus pour vous demander votre aide.
Mon problème est le suivant:
J'ai une macro avec l'aide du Forum, ma permis de colorer des cellules
en fonction du nombre de jours et d'inscrire un symbole voir fichier joint.
La macro fonctionne très bien, mais elle esiot anormalement longue...
Plus de 20 minutes pour les données de mon fichier.
J'ai l'ai coupé pour la démo et éviter qu'il dure, mais cela prend comme même
plus de 7 minutes !
Pourriez-vous SVP essayer de l'optimiser.
Par avance, Merci, pourvotre aide.
Cordialement.
 

Pièces jointes

  • COLORATION_DONNEES.xlsm
    220.7 KB · Affichages: 37
  • COLORATION_DONNEES.xlsm
    220.7 KB · Affichages: 35
  • COLORATION_DONNEES.xlsm
    220.7 KB · Affichages: 33
Dernière édition:

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour à tous les Amis du Forum.
C'est bien dans cette discussion que voulais le poster .
Roger2327, as-tu une idée de ce qui coince ?
Par avance, Merci pour votre aide.
Cordialement.
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Remplacer une Formule par une macro

Bonjour Aubelix

Vois si cela te convient:

J'ai supprimé la coloration en Vba puisqu'elle existe en MFC
J'ai modifié la boucle d'alimentation de la colonne M
Si nécessaire je peux regarder pour créer la MFC par Vba

PS: Salut ROGER
 

Pièces jointes

  • COLORATION_DONNEES_a.xlsm
    223.5 KB · Affichages: 30
  • COLORATION_DONNEES_a.xlsm
    223.5 KB · Affichages: 33
  • COLORATION_DONNEES_a.xlsm
    223.5 KB · Affichages: 30
Dernière édition:

aubelix

XLDnaute Impliqué
Re : Remplacer une Formule par une macro

Bonjour PierreJean et tous les Amis du Forum.

Ta macro fonctionne à merveille "à la VITESSE d'un éclair"
Quel changement ! Merci pour ton aide.
Si il était possible de colorer le fond du nombre de jours restants
comme la colonne E (sans colorer les cellules vides).
Encore Mille mercis pour ta précieuse aide.
Tu me fais gagner du temps.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87