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

Problème activate.cell

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

N

newpixi

Guest
Bonjour,

Je suis entrain de réaliser un projet VBA ayant pour but de sélectionner des valeurs, et les mettre en rouge (pas de formes conditionelles evidemment...)

Je bloque pour le moment sur une toute petite étape, mais regardons d'abord la structure du programme:

1°) Je définis ma variable Max1 et ma selection
2°) J'écris l'égalité suivante :
Max1= application.WorksheetFunction.Large(Selection, 1)

Je veux maintenant faire un truc du genre :
Max1.select ou Max1.activate

Mais malheuresement je ne sais pas comment activer la cellule contenant Max1,

Tout celà dans le but de faire devenir la cellule contenant Max1 rouge.

Je tiens à préciser que j'aurais Max2, Max3..Max5. C'est peut-être intéressant de faire une boucle du style :

For i =1 to 5
Max= application.WorksheetFunction.Large(Selection, i)
Next


Cordialement,

Antoine
 
Dernière modification par un modérateur:
Re : Problème activate.cell

Bonjour,

A titre d'info personnelle, que fais cette fonction?
Quel est son équivalence dans les fonctions Excel?
Je dirais déjà que Max1 ne renvoie pas une cellule mais une valeur non?
Donc il faudra chercher cette valeur dans "Selection" si j'ai bien suivi:

For Each Cell in Selection
If Cell.Value = Max1 Then
.........
..........
 
Re : Problème activate.cell

Bonjour newpixi, bonjour Skoobi,

moi je dirais que Large doit correspondre à Grande.valeur, mais je ne suis pas sûr... donc comme tu le dit, ça renvoie une valeur et pas une cellule... il faut encore repérer la cellule grâce à sa valeur.
 
Re : Problème activate.cell

Bonjour à tous les deux,

Merci de votre aide🙂,

Je viens à l'instant de régler un problème avec la formule suivante:

Call Selection.Find(ValMax1, , xlValues).Activate
ActiveCell.Interior.Color = vbRed

Malheuresement, comme prévu mon fichier devient gros et moche (répétition des même procédures 5 fois...)

Je vous joint mon fichier afin de voir si vous pouvez résoudre mon problème avec une boucle, ou si vous êtes simplement curieux

Pour infos, le fichier sélectionne les 5 "plus hautes" valeurs et les mets en rouge. Je voulais du VBA et pas de mise en forme conditionnelle classique.. En effet je vais devoir réaliser cette macro de la cellule A à la cellule CC !

Cordialement,

Antoine

Modifs: Merci également à Pierrot pour ses conseils,
 

Pièces jointes

Dernière modification par un modérateur:
Re : Problème activate.cell

Re,

Salut Pierrot93, tototiti, merci pour l'info 🙂
newpixi, je te suggere de passer par un tableau comme ceci:

Code:
Sub rasta()
Dim i As Integer
Dim ValMax(1 To 5) As Long
Dim totalmax As Long
   'Selection de la plage de recherche
   Range("c1:c52").Select
   
   'Enleve tout les valeur en gras
   Selection.Font.Bold = False
   Selection.Interior.ColorIndex = xlNone
   
  For i = LBound(ValMax) To UBound(ValMax)
    ValMax(i) = Application.WorksheetFunction.Large(Selection, i)
    Selection.Find(ValMax(i), , xlValues).Interior.Color = vbRed
  Next
End Sub
 
Re : Problème activate.cell

Merci Skoobi, ca marche du tonnerre !

En revanche j'ai du mal à comprendre le code avec Lbound et Ubound. Que signifie ces instructions?

Merci,
 
Re : Problème activate.cell

Re,

J'ai du mal avec VBA décidemment...

Je suis entrain de cherchain l'inverse de la fonction "worksheetfunction.large". Comment fait on pour la chercher? Dans la bibli VBA, les Worksheetsfunction. sont trop nombreuses pour toutes les essayer...

Merci
 
Re : Problème activate.cell

Re,

Le code avance... Les erreurs aussi...

1°) Dans la colonne C, les cellules rouges sont mal "coloriées", en effet ce ne sont pas les 5 plus mauvaises. (le problème se répète colonne "F"..)

2°) Le programme ne prend pas en compte les %, ni les ,...

3°) Je suis perdu 🙂

Je ne comprends pas pourquoi ca ne marche pas, je cumule les tests, c'est affolant ! 😀

Merci d'avance,

Antoine
 

Pièces jointes

Re : Problème activate.cell

Re bonjour,

il faut préciser la recherche dans toute la cellule (en bleu) et gérer le format pour la dernière colonne (en vert):

Code:
Sub rasta()
Dim n As Integer
Dim ValMax(1 To 5) As Variant
Dim ValMin(1 To 5) As Variant

   'Selection de la plage de recherche
   'Range("c1:c52").Select
   
   For n = 3 To 8
   ActiveSheet.Columns(n).Select
 'ton code qui fait reference a (ActiveSheet.columns(n) ou Sheets("SonNom").columns(n)
   
   'Enleve tout les valeur en gras
   Selection.Font.Bold = False
   Selection.Interior.ColorIndex = xlNone
   
         For i = LBound(ValMax) To UBound(ValMax)
                ValMax(i) = Application.WorksheetFunction.Large(Selection, i)
                [B][COLOR=Green]If Selection(1).NumberFormat = "General" Then[/COLOR][/B]
                  Selection.Find(ValMax(i), , xlValues, [COLOR=Blue][B]lookat:=xlWhole[/B][/COLOR]).Interior.Color = vbGreen
                Else: Selection.Find([B][COLOR=Green]Format(ValMax(i), Selection(1).NumberFormat)[/COLOR][/B], , xlValues, [B][COLOR=Blue]lookat:=xlWhole[/COLOR][/B]).Interior.Color = vbGreen
                End If
                ValMin(i) = Application.WorksheetFunction.Small(Selection, i)
                [B][COLOR=Green]If Selection(1).NumberFormat = "General[/COLOR][/B]" Then
                  Selection.Find(ValMin(i), , xlValues, lookat:=xlWhole).Interior.Color = vbRed
                Else: [B][COLOR=Green]Selection.Find(Format(ValMin(i), Selection(1).NumberFormat)[/COLOR][/B], , xlValues, lookat:=xlWhole).Interior.Color = vbRed
                End If
         Next i
         
         
     Next n
End Sub
 
Re : Problème activate.cell

Merci Skoobi, ca marche parfaitement,

J'ai pas encore compris les ficelles de VBA 🙂

Je vais progresser, un jour 😀

Merci encore a tous,

Antoine
 
Re : Problème activate.cell

Bonsoir tout le monde,

Je tiens à remercier tout le monde pour le temps passé à m'aider, 🙂

Comme promis, je publie mon code, si vous avez des commentaires...

Rappel : But de ce code :

Appliquer une MFC pour les 5 meilleures cellules, et les 5 moins bonnes.

Code:
Sub couleur()

'Définition des variables utilisées dans le code
Dim plage1 As Range
Dim plage2 As Range
'Dim plage3 As Range 'On ne ne l'utilise pas pour le moment (si oui, supprimer le ' en début de ligne)
Dim plage_totale As Range
Dim ValMax(1 To 5) As Variant 'Modifier ici les valeurs pour défnir les meilleurs ou moins bonnes cellules (voir suite du code)
Dim ValMin(1 To 5) As Variant


   
   'On sélectionne la feuille, puis on sélectionne la plage pour mettre les nombres sous la bonne mise en forme
   'Modifier la plage (H4:FA82s'il y a ajout de colonne
   Sheets("Analyse_Couleur").Select
   Range("H4:FA82").Select
   Selection = Application.Round(Selection, 2)
   
   'n représente le numéro de colonne, par exemple colonne A = 1, B=2...
   'Il est possible de modifier ce nombre s'il y a une insertion de colonne
   
   For n = 8 To 157
  
   Range(Cells(21, n), Cells(37, n)).Name = "plage1"
   Range(Cells(39, n), Cells(79, n)).Name = "plage2"
   'Range(Cells(4, n), Cells(19, n)).Name = "plage3"
   
   'Définition de la plage de sélection (réunion des plages précédentes), modifier le code comme suit
   'pour ajout de la plage3 :
   'Set plage_totale = Application.Union(Range("plage1"), Range("plage2"), Range("plage3"))
   Set plage_totale = Application.Union(Range("plage1"), Range("plage2"))
   
   plage_totale.Select
   
   'Mise en forme de la plage: on annule toutes les mises en page précédentes sur la sélection
   With Selection
        .Font.Bold = False 'on enlève la mise en forme "en gras"
        .Interior.Color = RGB(255, 255, 255) 'on applique un fond de cellule blanc
        .NumberFormat = "General" 'le format des nombres doit impérativement être "General" pour que
        'les étapes suivantes se réalisent...'
   End With
   
         'Définition des 5 meilleures valeurs, et les 5 moins bonnes, avec comme base un tableau
         'Pour modifier le nombre de valeurs à trouver, il faut revenir au début du code, à la ligne "Dim ValMax"
         'Il faut alors changer, valmax comme 1 TO 4 par exemple
         For i = LBound(ValMax) To UBound(ValMax) 'Définition du tableau
         
                ValMax(i) = Application.WorksheetFunction.Large(Selection, i) 'La fonction "large" définit les 5 meilleures valeurs
                Selection.Find(ValMax(i), , xlValues, lookat:=xlWhole).Interior.Color = vbGreen 'Le programme retrouve
                'les valeurs et leur applique une couleur de fond, ici green. Pour modifier cette couleur, on peut
                'utiliser la méthode RGB comme exprimée dans le code suivant (=RGB(X,X,X))
                
                ValMin(i) = Application.WorksheetFunction.Small(Selection, i) 'La fonction "small" définit les 5 moins bonnes valeurs
                Selection.Find(ValMin(i), , xlValues, lookat:=xlWhole).Interior.Color = RGB(18, 31, 171)
            
         Next i 'La première boucle est finie, c'est à dire que la meilleure et plus faible valeur sont mis en forme
                  
'On applique une mise en forme particulière à la colonne de la boucle
     Selection.NumberFormat = "#,##0_);[Red](#,##0)"
     'End If
     
     Next n 'on sort de la boucle
     'Mise en forme de certaines colonnes (exprimée en pourcentage)
     Range("AH:AH,AO:AQ,AX:AZ,BA:BC,BG:BI,DQ:DQ").NumberFormat = "0.00""%"";[red]-0.00""%"""
     
End Sub
'Fin du code

je ne peux vous fournir le fichier xls lié car il y a des données privées 😀

Amusez vous bien !
 
Dernière modification par un modérateur:
- 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
11
Affichages
3 K
doudou10800
D
N
Réponses
2
Affichages
2 K
N
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…