Créer une macro de MFC

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Poulepiquante

XLDnaute Nouveau
Bonjour,

Débutante en VBA, je voudrais mettre en forme automatiquement des rapports de tailles importantes.

J'ai attaché a ce message un petit fichier, résumant les questions sur lesquelles j'ai besoin d'un coup de main.

Merci, par avance, pour votre aide!
 

Pièces jointes

Re : Créer une macro de MFC

Bonjour

Voici une réponse pour le point 1 :

VB:
Sub trie_et_saut_de_page()
    
    'trier par genre
    Range("A1:E" & Range("B65000").End(xlUp).Row).Sort Key1:=Range("B1"), Header:=xlGuess
    
    For i = 3 To Range("B65000").End(xlUp).Row
        If Cells(i, "B").Value <> Cells(2, "B").Value Then
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i) 'ajouter le saut de page
            Exit For
        End If
    
    Next i
    
End Sub

Pour le problème 2-A :
En Mise en forme conditionnel / Formule :
Code:
=ET(DATE(ANNEE(MAINTENANT());MOIS(D1);JOUR(D1))>=MAINTENANT()-30;DATE(ANNEE(MAINTENANT());MOIS(D1);JOUR(D1))<=MAINTENANT()+30)
Attention, il faut impérativement que les dates soient sous forme de date.
Est-ce le cas ?


Olivier
 
Dernière édition:
Re : Créer une macro de MFC

Re.
Le problème est très simple : lorsque vous mettez en place une MFC, qui contient des formules, il prendre la cellule en sur-surbrillance (la cellule blanche parmis les cellules bleues sélectionnées) comme point de repère.
La formule que j'ai écrite fonctionne depuis la celulle de la ligne 1 uniquement (d'où les D1 )
Il faut donc sélectionner toute la colonne 1, et copier la formule.

Si vous souhaitez prendre la plage de A2 à A5 (par exemple) il faut sélectionner de haut en bas et remplacer les "D1" par des "D2"


A vous de jouer

Olivier
 
Re : Créer une macro de MFC

Merci, ça fonctionne parfaitement.
Est il possible de mettre cette MFC en VBA pour que ce soit automatiquement lancé?
Et pourriez vous m'aider encore pour le code pour la Question 2B? Cf fichier attaché dans les messages précédents)
Je ne connais pas du tout le langage de programmation....
1000 mercis.
 
Re : Créer une macro de MFC

Bonjour

Pour automatiser, j'utilise l'enregistreur de macro qui me renvoi une code que j'améliore en peu :
VB:
    Range("A2:A" & Range("A65000").End(xlUp).Row).Select 'selectionner les lignes de la colonne A
    Selection.FormatConditions.Delete 'supprimer les formats conditionnel existant
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=ET(DATE(ANNEE(MAINTENANT());MOIS(D2);JOUR(D2))>=MAINTENANT()-30;DATE(ANNEE(MAINTENANT());MOIS(D2);JOUR(D2))<=MAINTENANT()+30)" 'ajouter le critère en fonction des dates
    Selection.FormatConditions(1).Font.ColorIndex = 3 'ajouter la couleur (ici rouge)


Pour le 2B : c'est aussi une MCF en fonction du réusltat de la colonne 2 ?

Olivier
 
Dernière édition:
Re : Créer une macro de MFC

Si c'est une MFC :

VB:
    Range("C2:C" & Range("C65000").End(xlUp).Row).Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=SI(E2=VRAI;VRAI;FAUX)"
    Selection.FormatConditions(1).Font.ColorIndex = 5

Cdt Olivier
 
Re : Créer une macro de MFC

Bonjour,

Me revoila et merci d'avance pour votre patience.

Pour les sauts de page, je rencontre un problème:

Quand j'execute la macro 'trier par genre créée par Odesta, cela fonctionne pour le premier changement de valeur dans la colonne concernée, mais après, ca ne marche plus.

Vous trouverez le fichier en PJ, pour rappel je souhaite insérer un saut de page là chaque fois que la colonne B change de valeur.

Je ne sais pas tres bien de quoi je parle, mais n'y a-t-il pas un problème de boucle?

Merci
 

Pièces jointes

Re : Créer une macro de MFC

Bonjour

Avec cette légère modif : (oui je n'avais pas immaginé que l'on puisse etre de sexe X ^^ )
Code:
Sub trie_et_saut_de_page()
    
    'trier par genre
    Range("A1:E" & Range("B65000").End(xlUp).Row).Sort Key1:=Range("B1"), Header:=xlGuess
    
    For i = 3 To Range("B65000").End(xlUp).Row
        If Cells(i, "B").Value <> Cells([COLOR="Red"][U]i-1[/U][/COLOR], "B").Value Then
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i) 'ajouter le saut de page
            Exit For
        End If
    
    Next i
    
End Sub

Cordialement
Olivier
 
Re : Créer une macro de MFC

Olivier,

ARG je deviens folle!!
Dans la vraie vie le tri se fait plutot sur des pays, qui se trouvent dans la colonne G de mon ficher.
le saut de page se fait tres bien entre les 2 premiers pays, Autriche et Bulgarie, mais ne fonctionne pas pour le 3ème, Czech Republic.
Alors je ne comprend pas tres bien...
Ci dessous le code modifié selon vos conseils.
Merci encore...

Code:
'trier par genre

    Range("A1:CP" & Range("B65000").End(xlUp).Row).Sort Key1:=Range("G1"), Header:=xlGuess
    
    For i = 3 To Range("B65000").End(xlUp).Row
        If Cells(i, "G").Value <> Cells(i - 1, "G").Value Then
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i) 'ajouter le saut de page
            Exit For
    
    End If
    
Next i

End Sub
 
Re : Créer une macro de MFC

Voila, j'ai finalement réussi en utilisant le code suivant

With ActiveSheet
On Error Resume Next
For x = .HPageBreaks.Count To o Step -1
.HPageBreaks(x).Delete
Next

Range("A1:CP" & Range("B65000").End(xlUp).Row).Sort Key1:=Range("G1"), Header:=xlGuess
CompteurLigne = 0

For i = 3 To Range("B3").End(xlDown).Row
CompteurLigne = CompteurLigne + 1
'If (Cells(i, "G").Value <> Cells(i - 1, "G").Value) Or CompteurLigne = 15 Then
If (Cells(i, "G").Value <> Cells(i - 1, "G").Value) Then
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Rows(i)
CompteurLigne = 0
End If

Next i

Merci Olivier pour votre aide!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
149
Retour