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

XL 2010 Macro pour mettre en surbrillance (jaune) des doublons (RESOLU)

  • Initiateur de la discussion Initiateur de la discussion ymanot
  • Date de début Date de début

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 !

ymanot

XLDnaute Occasionnel
Bonjour à tous.
J'ai un document dans lequel je répartis des élèves à partir d'une feuille " TRI" dans différentes classes selon la saisie que j'effectue en colonne A.
A partir du code ci-dessous qui agit sur toute les feuilles nommée '3E"
j'aimerai insérer une macro mettant en surbrillance jaune, les doublons trouvés dans la comparaison entre les colonnes C et la plage (P:T) sans polluer la macro existante.

VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("tri 3E").[A1].CurrentRegion
    If Application.CountIf(.Columns(1), Sh.Name) = 0 Then Exit Sub
    Application.ScreenUpdating = False
    Sh.Cells.Delete 'RAZ
    .AutoFilter 1, Sh.Name 'filtre automatique
    .Copy Sh.[A1] 'copier-coller
    .AutoFilter
End With
Sh.Columns.AutoFit 'ajustement largeurs
End Sub

Ensuite dans ma feuille "récapitulatif" j'ai crée des macros automatiques via les boutons "recalcule" et " actualiser" qui permettent de recalculer l'ensemble des modifications. Car jusque là je n'ai pas réussi à automatiser les réajustements selon les variations opérées dans chacune des classes. Quelqu'un est il en mesure d'intégrer les calculs dans une macro en direct ?

vous en remerciant
Ymanot
 

Pièces jointes

Solution
re,

pour le deuxième point, impossible de tester, références à des fichiers externes non fournis
voici vos deux macros modifiées, les select ne servent quasiment jamais à rien et empêchent l'adressage direct, ils sont à proscrire plus de 99% du temps.
VB:
Sub calculheterog()
'
' calculheterog Macro
'

'
    With Worksheets("récapitulatif")
        .Range("D3:D4").FormulaR1C1 = "=SUM('3e3'!R[-1]C[2]:R[26]C[2])"
        .Range("E3:E4").FormulaR1C1 = "=SUM('3e4'!R[-1]C[1]:R[26]C[1])"
        .Range("F3:F4").FormulaR1C1 = "=SUM('3e5'!R[-1]C:R[26]C)"
        .Range("G3:G4").FormulaR1C1 = "=SUM('3e6'!R[-1]C[-1]:R[26]C[-1])"
        .Range("H3:H4").FormulaR1C1 = "=SUM('3e7'!R[-1]C[-2]:R[26]C[-2])"
        .Range("I3:I4").FormulaR1C1 =...
Bonjour ymanot, le forum

j'aimerai insérer une macro mettant en surbrillance jaune, les doublons trouvés dans la comparaison entre les colonnes C et la plage (P:T) sans polluer la macro existante.
encore faudrait t'il comprendre ce que vous désirez, dans votre fichier exemple, il n'y a que des A en colonne C et que des zéros en résultats de formule dans les colonnes P à T, merci de fournir un exemple fonctionnel pour le traitement ou de fournir des explications plus détaillées.
pour ce point, deux solutions :
1-reprendre en formules les calculs
2-puisque les macros fonctionnent, les déclencher lors d'un événement change dans une des feuilles concernées

Bien cordialement, @+
 
Bonjour Yeahou,

Les "A " c'etait pour anonymiser les noms de familles et oui comme j'ai aussi supprimé les noms dans les colonnes P à T, ma demande est devenue incohérente....damn).
Considerant "baba" en colonne C et "baba" dans une des colonnes de P à T il faudrait que cela soit en surbrillance jaune.

cdlt
ymanot
 
re,

pour le deuxième point, impossible de tester, références à des fichiers externes non fournis
voici vos deux macros modifiées, les select ne servent quasiment jamais à rien et empêchent l'adressage direct, ils sont à proscrire plus de 99% du temps.
VB:
Sub calculheterog()
'
' calculheterog Macro
'

'
    With Worksheets("récapitulatif")
        .Range("D3:D4").FormulaR1C1 = "=SUM('3e3'!R[-1]C[2]:R[26]C[2])"
        .Range("E3:E4").FormulaR1C1 = "=SUM('3e4'!R[-1]C[1]:R[26]C[1])"
        .Range("F3:F4").FormulaR1C1 = "=SUM('3e5'!R[-1]C:R[26]C)"
        .Range("G3:G4").FormulaR1C1 = "=SUM('3e6'!R[-1]C[-1]:R[26]C[-1])"
        .Range("H3:H4").FormulaR1C1 = "=SUM('3e7'!R[-1]C[-2]:R[26]C[-2])"
        .Range("I3:I4").FormulaR1C1 = "=SUM('3e8'!R[-1]C[-2]:R[26]C[-3])"
        .Range("J3:J4").FormulaR1C1 = "=SUM('repartition 2018 2019'!R[-1]C[-5]:R[160]C[-5])/6"
    End With
End Sub

Sub CALCULSEX()
'
' CALCULSEX Macro
'

'
    With Worksheets("récapitulatif")
        .Range("D6").FormulaR1C1 = "=COUNTIF('3e3'!R[-4]C[1]:R[23]C[1],""M"")"
        .Range("D7").FormulaR1C1 = "=COUNTIF('3e3'!R[-5]C[1]:R[23]C[1],""F"")"
        .Range("E6").FormulaR1C1 = "=COUNTIF('3e4'!R[-4]C:R[23]C,""M"")"
        .Range("E7").FormulaR1C1 = "=COUNTIF('3e4'!R[-5]C:R[23]C,""F"")"
        .Range("F6").FormulaR1C1 = "=COUNTIF('3e5'!R[-4]C[-1]:R[23]C[-1],""M"")"
        .Range("F7").FormulaR1C1 = "=COUNTIF('3e5'!R[-5]C[-1]:R[23]C[-1],""F"")"
        .Range("G6").FormulaR1C1 = "=COUNTIF('3e6'!R[-4]C[-2]:R[23]C[-2],""M"")"
        .Range("G7").FormulaR1C1 = "=COUNTIF('3e6'!R[-5]C[-2]:R[23]C[-2],""F"")"
        .Range("H6").FormulaR1C1 = "=COUNTIF('3e7'!R[-4]C[-3]:R[23]C[-3],""M"")"
        .Range("H7").FormulaR1C1 = "=COUNTIF('3e7'!R[-5]C[-3]:R[23]C[-3],""F"")"
        .Range("I6").FormulaR1C1 = "=COUNTIF('3e8'!R[-4]C[-3]:R[23]C[-4],""M"")"
        .Range("I7").FormulaR1C1 = "=COUNTIF('3e8'!R[-5]C[-3]:R[23]C[-4],""F"")"
    End With
End Sub

ensuite placez cette macro dans thisworkbook, avec la macro Private Sub Workbook_SheetActivate(ByVal Sh As Object) , cela déclenchera les macros à chaque changement dans une des feuilles de 3e. vos macros modifiées agiront sans qu'il y ait besoin de sélectionner la feuille auparavant
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Left(Sh.Name, 1) = "3" Then
    Call calculheterog
    Call CALCULSEX
End If
End Sub

pour le premier point, faites simplement une MFC, pas besoin de macro

Bien cordialement, @+
 
Bonjour,
j 'ai bien placé la macro comme suit

VB:
Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("tri 3E").[A1].CurrentRegion
    If Application.CountIf(.Columns(1), Sh.Name) = 0 Then Exit Sub
    Application.ScreenUpdating = False
    Sh.Cells.Delete 'RAZ
    .AutoFilter 1, Sh.Name 'filtre automatique
    .Copy Sh.[A1] 'copier-coller
    .AutoFilter
End With
Sh.Columns.AutoFit 'ajustement largeurs
End Sub
Sub calculheterog()
'
' calculheterog Macro
'

'
    With Worksheets("récapitulatif")
        .Range("D3:D4").FormulaR1C1 = "=SUM('3e3'!R[-1]C[2]:R[26]C[2])"
        .Range("E3:E4").FormulaR1C1 = "=SUM('3e4'!R[-1]C[1]:R[26]C[1])"
        .Range("F3:F4").FormulaR1C1 = "=SUM('3e5'!R[-1]C:R[26]C)"
        .Range("G3:G4").FormulaR1C1 = "=SUM('3e6'!R[-1]C[-1]:R[26]C[-1])"
        .Range("H3:H4").FormulaR1C1 = "=SUM('3e7'!R[-1]C[-2]:R[26]C[-2])"
        .Range("I3:I4").FormulaR1C1 = "=SUM('3e8'!R[-1]C[-2]:R[26]C[-3])"
        .Range("J3:J4").FormulaR1C1 = "=SUM('repartition 2018 2019'!R[-1]C[-4]:R[160]C[-5])/7"
        .Range("J3:J4").FormulaR1C1 = "=SUM('repartition 2018 2019'!R[-1]C[-5]:R[160]C[-5])/6"
    End With
End Sub

Sub CALCULSEX()
'
' CALCULSEX Macro
'

'
    With Worksheets("récapitulatif")
        .Range("D6").FormulaR1C1 = "=COUNTIF('3e3'!R[-4]C[1]:R[23]C[1],""M"")"
        .Range("D7").FormulaR1C1 = "=COUNTIF('3e3'!R[-5]C[1]:R[23]C[1],""F"")"
        .Range("E6").FormulaR1C1 = "=COUNTIF('3e4'!R[-4]C:R[23]C,""M"")"
        .Range("E7").FormulaR1C1 = "=COUNTIF('3e4'!R[-5]C:R[23]C,""F"")"
        .Range("F6").FormulaR1C1 = "=COUNTIF('3e5'!R[-4]C[-1]:R[23]C[-1],""M"")"
        .Range("F7").FormulaR1C1 = "=COUNTIF('3e5'!R[-5]C[-1]:R[23]C[-1],""F"")"
        .Range("G6").FormulaR1C1 = "=COUNTIF('3e6'!R[-4]C[-2]:R[23]C[-2],""M"")"
        .Range("G7").FormulaR1C1 = "=COUNTIF('3e6'!R[-5]C[-2]:R[23]C[-2],""F"")"
        .Range("H6").FormulaR1C1 = "=COUNTIF('3e7'!R[-4]C[-3]:R[23]C[-3],""M"")"
        .Range("H7").FormulaR1C1 = "=COUNTIF('3e7'!R[-5]C[-3]:R[23]C[-3],""F"")"
        .Range("I6").FormulaR1C1 = "=COUNTIF('3e8'!R[-4]C[-3]:R[23]C[-4],""M"")"
        .Range("I7").FormulaR1C1 = "=COUNTIF('3e8'!R[-5]C[-3]:R[23]C[-4],""F"")"
    End With
End Sub

Mais les calculs ne se lancent pas automatiquement
 
Bonjour, merci j'avais vu mon erreur, et j ai modifié ma réponse,
Malgré tout vous avez été plus rapide que moi en reprenant le document et je vous en remercie.
très cordialement
Ymanot
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…