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

VBA - Comparaison cellule-colonne

  • Initiateur de la discussion Initiateur de la discussion Ben_Is_Airborned
  • 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 !

B

Ben_Is_Airborned

Guest
Bonjour à tous,

Voici mon petit problème sur lequel un petit coup de main ne serait décidément pas superflu.

Je m'explique :
Sur mon fichier joint, j'ai 2 feuilles : Résultats et Dates.

La feuille "Dates" se remplit automatiquement (enfin, par le code de la macro, quoi) en listant toutes les dates comprises entre la plus petite de la page Résultats et la plus élevée.

Jusque là, pas de lézard.

Là où ça se complique, c'est quand je veux colorier une date dans "Dates" qui n'existe pas dans "Résultats".
En effet, j'aimerai pouvoir mettre en valeur, pour différencier, les dates qui sont dans "DATES" mais qui ne sont pas physiquement listées dans les résultats.

Paramètres à savoir :
-Les données ci jointes ne sont qu'un extrait d'un tableau de plus de 40 000 lignes. Les dates peuvent apparaitre sur la page "Résultats" jusqu'à 350 fois la même.
- Obligation formelle d'utiliser VBA pour ça. Ce code est un extrait d'un UserForm_Initialize
- Excel 2000 sur Windows XP.

Je vous remercie pour votre aide.

Cordialement,

Benoît
 

Pièces jointes

Dernière modification par un modérateur:
Re : VBA - Comparaison cellule-colonne

Bonsoir Benoît et tititoto, bonsoir à toutes et à tous 🙂


Tu peux essayer ce code :

Code:
Sub suppr_dates()
'
Dim DateMin As Date
Dim dateMax As Date
'
  
  Sheets("Dates").Select
  DateMin = Application.WorksheetFunction.Min(Sheets("Résultats").Range("A:A"))
  dateMax = Application.WorksheetFunction.Max(Sheets("Résultats").Range("A:A"))
  
  Range("A2").Select
  
  ActiveCell.Value = DateMin
  d = dateMax - DateMin
  d = d + 2
  
  Selection.AutoFill Destination:=Range("A2:A" & d), Type:=xlFillDefault
  
  Range("A1").Value = "Jour"
  Columns("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
          OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  
  NbJours1 = Application.WorksheetFunction.CountA(Range("A:A")) - 1
  Range("A2").Select
  
  
  For i = 2 To NbJours1
    [B][COLOR="Blue"]If[/COLOR] Application.WorksheetFunction.CountIf(Sheets("Résultats").Range("D:D"), Cells(i, 1)) > 0 [COLOR="blue"]Then[/COLOR]
      Cells(i, 1).Interior.ColorIndex = 3[/B]
    End If
  Next i

End Sub

Si tu veux le tester avec le fichier que tu as joint, il faut remplacer :

Application.WorksheetFunction.CountIf(Sheets("Résultats").Range("D: D"), Cells(i, 1)) > 0

par

Application.WorksheetFunction.CountIf(Sheets("Résultats").Range("A:A"), Cells(i, 1)) > 0

Tiens-nous au courant 🙂

Par contre, pour 40000 lignes, macro ou MFC, ça va ramer... 🙄

@+
 
Re : VBA - Comparaison cellule-colonne

Bonjour à tous

Nolich :
Merci infiniment, ça fonctionne parfaitement comme ça.

Tototiti :
Ce code n'est qu'un extrait, et la finalité n'est pas de colorier quelques cases en rouge. Il y aura toute une tripotée qui viendra en fonction de la condition.
Ce code sert à générer une ComboList dans un UserForm. D'où ma volonté d'utiliser VBA pour çela.

Amicalement,
 
Re : VBA - Comparaison cellule-colonne

Re, bonjour à toutes et à tous 🙂


Euh... J'avions mal lu 🙄

C'est plutôt ça, non ?

Code:
  For i = 2 To NbJours1
    If Application.WorksheetFunction.CountIf(Sheets("Résultats").Range("D:D"), Cells(i, 1)) [B][COLOR="red"]=[/COLOR][/B] 0 Then
      Cells(i, 1).Interior.ColorIndex = 3
    End If
  Next i

Enfin, à toi de voir 😉

@+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
0
Affichages
1 K
D
K
Réponses
30
Affichages
13 K
stefen
S
H
Réponses
2
Affichages
2 K
Homer75
H
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…