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

Mise en forme conditionnel

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

A

Arverne

Guest
Bonjour forum, Bonjour à tous

Je débute en VBA, j'ai voulu réaliser rapidement un petit programme pour m'aider en anglais.
Principe:
Sur la feuille 2 de mon classeur j'ai une liste de mot en anglais sur la colonne A avec leur traduction dans la colonne B.
La Macro indique un mot sur la feuille 1 colonne A et il faut saisir sa traduction en colonne B.
Bon,c'est sans prétention mais cela ne fonctionne pas.
En effet, j'ai pensé utiliser la mise en forme conditionnel, mais celà fonctionne pas si on utilise une autre feuille.

Savez vous comment je puis faire ?

Toute suggestion ou amélioration est la bienvenue.

Merci d'avance !


Code:
Sub Macro2()
Dim NbreDeMot As Integer
Dim Ligne As Integer
Dim Colonne As Integer
Dim DerniereLigne As Integer
Dim MotATraduire As String
Dim Col As String

    'Nombre de mot à traduire
    NbreDeMot = Sheets(2).UsedRange.Cells(Sheets(2).UsedRange.Count).Row
    Randomize
    'Selectionne le mot a traduire
    Ligne = Int((NbreDeMot - 1 + 1) * Rnd + 1)
    'Selectionne le sens a traduire
    Colonne = Int((2 - 1 + 1) * Rnd + 1)
    
    MotATraduire = Sheets(2).Cells(Ligne, Colonne)
    
    'Récupère la derniere ligne de la feuille d exercice
    DerniereLigne = Sheets(1).UsedRange.Cells(Sheets(1).UsedRange.Count).Row + 1
    
    'Affiche le mot a traduire
    Sheets(1).Cells(DerniereLigne, 1) = MotChoisi
    
    If (Colonne = 1) Then
    Col = 'B'
    Else
    Col = 'A'
    End If
    
    'Mise en forme conditionnel : Mettre en Vert si le mot saisie est bien traduit
    Sheets(1).Cells(DerniereLigne, 2).FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:='=Feuil2!$' & Col & '$' & Ligne
    'Sinon il est en rouge
    Sheets(1).Cells(DerniereLigne, 2).FormatConditions(1).Font.ColorIndex = 10
    
End Sub
🙂
 
Bonsoir Arverne,

Peut-être pourrais-tu essayer un code comme celui-ci :

Code:
Option Explicit

Sub Macro2()
'
Dim NbreDeMot As Integer
Dim Ligne As Integer
Dim Colonne As Integer
Dim DerniereLigne As Integer
Dim MotATraduire As String
Dim Col As String
'
  Sheets(1).Select
  'Nombre de mot à traduire
  NbreDeMot = Sheets(2).UsedRange.Rows.Count
  Randomize
  'Selectionne le mot a traduire
  Ligne = Int(NbreDeMot * Rnd + 1)
  'Selectionne le sens a traduire
  Colonne = Int(2 * Rnd + 1)
  
  MotATraduire = Sheets(2).Cells(Ligne, Colonne)
  
  'Récupère la derniere ligne de la feuille d exercice
  DerniereLigne = Cells(65536, 1).End(xlUp).Row + 1
  
  'Affiche le mot a traduire
  Cells(DerniereLigne, 1) = MotATraduire
  
  If (Colonne = 1) Then
    Col = 'B'
  Else
    Col = 'A'
  End If
  
  'Mise en forme conditionnelle : Mettre en Vert si le mot saisi est bien traduit
  With Sheets(1).Cells(DerniereLigne, 2)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:=Sheets(2).Range(Col & Ligne).Text
    .FormatConditions(1).Font.ColorIndex = 10
    'Sinon il est en rouge
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=Sheets(2).Range(Col & Ligne).Text
    .FormatConditions(2).Font.ColorIndex = 3
  End With
End Sub

Il y a matière à faire plus concis mais moins facile à lire 😉

A+
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…