Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 macro de comparaison

bd.afaf

XLDnaute Junior
Bonjour Forum,

je veux faire une macro selon le concept suivant : si le mois d'avant est payé et que le mois prochain remonte un montant qui n'est pas payé, de mettre ce montant en gras et en rouge. j'ai donné le résultat que je souhaite avoir avec une macro ( les montants en rouge) .

Voici mon tableau comme exemple:
 

Pièces jointes

  • Classeur3.xlsx
    15.9 KB · Affichages: 6

soan

XLDnaute Barbatruc
Inactif
Bonsoir bd.alaf,

ton fichier en retour.

j'ai juste ajouté une règle de MFC
pour la plage H5:H15 :

=ET(F5="payé";H5<>0)

soan
 

Pièces jointes

  • Classeur3.xlsx
    17.3 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir bd.afaf,
Pourquoi vouloir une macro pour remplir la fonction ?
Avec une simple MFC on devrait y arriver, comme par ex avec cette PJ et la MFC :
VB:
=ET($F5="payé";$H5<>"payé")
 

Pièces jointes

  • Classeur3 (2).xlsx
    16 KB · Affichages: 2

bd.afaf

XLDnaute Junior
Bonsoir bd.afaf,
Pourquoi vouloir une macro pour remplir la fonction ?
Avec une simple MFC on devrait y arriver, comme par ex avec cette PJ et la MFC :
VB:
=ET($F5="payé";$H5<>"payé")
bonjour,


j'utilise une macro qui réalise plusieurs opérations, et j'aimerais avoir le code de l'opération que j'ai demandé pour l'intégrer dans ma macro.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Vous m'étonnez, votre fichier contient déjà plusieurs MFC :

Je n'ai fait qu'en rajouter une.
Il suffit de faire Accueil/Mise en forme conditionnelle/Gérer les règles.
De plus votre fichier étant un xlsx, il ne peut pas contenir de macros, sinon ce serait un xlsm.
 

bd.afaf

XLDnaute Junior
Mais ma MFC fait exactement ce que vous voulez, et sans VBA.
Qu'entendez vous par "cette MFC est faite manuellement" ?
dans mon fichier d'origine, j'ai les mois de janvier jusqu'à Décembre, je vais pas faire la MFC à chaque mois !
comme j'ai mentionné avant, j'ai un code VBA dans lequel je veux intégrer cette opération, genre ne pas la faire manuellement!!
ce que tu as trouvé ce sont des MFC que j'ai fais manuellement pour vous expliqué le résultat que je souhaite avoir au final.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec :
VB:
Sub RougeSiPayé()
    Dim Ligne%, Colonne%, DL%
    Application.ScreenUpdating = False
    For Colonne = 8 To 26 Step 2                        ' de Mars à Décembre
        If Cells(4, Colonne) <> "" Then                 ' pas de traitement si pas de mois
            DL = Cells(65000, Colonne).End(xlUp).Row    ' dernière ligne
            For Ligne = 5 To DL
                If Cells(Ligne, Colonne) <> "payé" And Cells(Ligne, Colonne - 2) = "payé" Then
                    Cells(Ligne, Colonne).Font.Color = vbRed
                    Cells(Ligne, Colonne).Font.Bold = True
                Else
                    Cells(Ligne, Colonne).Font.Color = vbBlack
                    Cells(Ligne, Colonne).Font.Bold = False
                End If
            Next Ligne
        End If
    Next Colonne
End Sub
Je traite de mars à décembre. Si les mois n'existent pas ils sont ignorés.
Evidemment à adapter.
 

Pièces jointes

  • Classeur3 (5).xlsm
    27.4 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
@bd.afaf (salut sylvanu)

ton fichier en retour (sans la MFC que j'avais ajoutée)

fais Ctrl e ➯ travail effectué !

code VBA :

VB:
Option Explicit

Sub Essai()
  Dim dlg&, lig&
  With Worksheets("Feuil2").ListObjects("Tableau2")
    If .DataBodyRange Is Nothing Then Exit Sub
    dlg = .ListRows.Count: Application.ScreenUpdating = 0
    For lig = 1 To dlg
      With Cells(lig + 4, 6)
        If .Value = "payé" And .Offset(, 2) <> 0 Then
          With Cells(.Row, 8).Font
            .Color = -16776961: .Bold = -1
          End With
        End If
      End With
    Next lig
  End With
End Sub

soan
 

Pièces jointes

  • Classeur3.xlsm
    23.6 KB · Affichages: 1

soan

XLDnaute Barbatruc
Inactif
@bd.alaf

??? tu n'as pas téléchargé le fichier de mon post #10 ? essaye-le d'abord, au moins : peut-être qu'il fera ce que tu attendais ... et par macro ! (si ça te convient, ton post #11 est inutile)

soan
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, pour mon code changez la ligne :
VB:
If Cells(Ligne, Colonne) <> "payé" And Cells(Ligne, Colonne - 2) = "payé" Then
par
If Cells(Ligne, Colonne) Like "*payé*" = False And Cells(Ligne, Colonne - 2) Like "*payé*" = True Then
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…