IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Changer la sélection dans un Range().select


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut Changer la sélection dans un Range().select
    Bonjour,
    je tente de faire une mise en forme de cellules d'une ligne selon la valeur d'une cellule de cette même ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     Dim i As Integer
        For i = 3 To 285 Step 1
        Range("Ci:Qi").Select
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
            Formula1:="=$B$i"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13551615
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
            Formula1:="=$B$i"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16752384
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 13561798
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
            "=NBCAR(SUPPRESPACE(Ci))=0"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        Selection.FormatConditions(1).StopIfTrue = True
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=$B$i"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16751204
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 10284031
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Next i
        
    End Sub
    À la base, le code a été créé avec enregistrer une macro et je tente de le modifier (le texte en vert sont mes modificationpour qu'il se répète en boucle sur les ligne 3 a 285. Malheureusement, il semble que je ne puisse pas faire ca simple.

    Les cellules à mettre en forme conditionnelle sont toujours de la colonne C à la colonne Q mmis en forme selon la valeur de la cellule de la colonne B

    Quelqu'un pourrait me donner un coup de main

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu dois écrire sous la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C" & i & ":Q" & i).Select
    Cordialement

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    Bonjour,

    Je reçois une erreur de syntaxe avec ce code.
    J'ai essayé de sortir les : mais sans succès

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Dim i As Integer
     
    With Sheets("Feuil1")
        For i = 3 To 285
            With .Range("C" & i & ":Q" & i)
                .FormatConditions.Delete
                .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=$B$" & i
                With .FormatConditions(1)
                    .Font.Color = -16383844
                    .Interior.Color = 13551615
                    .StopIfTrue = False
                End With
     
                .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=$B$" & i
                With .FormatConditions(2)
                    .Font.Color = -16752384
                    .Interior.Color = 13561798
                    .StopIfTrue = False
                End With
     
                .FormatConditions.Add Type:=xlExpression, Formula1:="=NBCAR(SUPPRESPACE(C" & i & "))=0"
                With .FormatConditions(3)
                    .SetFirstPriority
                    .StopIfTrue = True
                End With
     
                .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$B$" & i
                With .FormatConditions(4)
                    .Font.Color = -16751204
                    .Interior.Color = 10284031
                    .StopIfTrue = False
                End With
            End With
        Next i
    End With

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    Bonjour Mercatog,
    Je sais pas pourquoi mais à chaque fois que j'ai tenté d'utiliser la commande
    With sheets("Feuil1")

    J'ai reçu une erreur d'exécution '9'

    L'indice n'appartient pas à la sélection

    Est-ce que je peux juste mettre Feuil1 en avant du .Range et mettre Range en avant de tout les autres . ???

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Parce que TA feuille ne s'appelle pas Feuil1. Tu dois adapter.

    Sans boucle qui est assez lente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    With Sheets("Feuil1") 'Adapte ici le nom de ta feuille
        With .Range("C3:Q285")
            .FormatConditions.Delete
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=INDIRECT(Adresse(Ligne();2))"
            With .FormatConditions(1)
                .Font.Color = -16383844
                .Interior.Color = 13551615
                .StopIfTrue = False
            End With
     
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=INDIRECT(Adresse(Ligne();2))"
            With .FormatConditions(2)
                .Font.Color = -16752384
                .Interior.Color = 13561798
                .StopIfTrue = False
            End With
     
            .FormatConditions.Add Type:=xlExpression, Formula1:="=NBCAR(SUPPRESPACE(INDIRECT(Adresse(Ligne();3))))=0"
            With .FormatConditions(3)
                .SetFirstPriority
                .StopIfTrue = True
            End With
     
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=INDIRECT(Adresse(Ligne();2))"
            With .FormatConditions(4)
                .Font.Color = -16751204
                .Interior.Color = 10284031
                .StopIfTrue = False
            End With
        End With
    End With

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    Rebonjour,
    Je suis peut-être pas très bon en programmation , en fait je suis à chier mais je suis quand même capable de bien lire du code et de comprendre que ma feuille doit s'appeller Feuil1 pour que ca marche

    je suis pas un imbécile fini, je suis juste un peu con

    La dernière fois j'avais contourner le problème en marquant Feuil1 avant chaque point mais là, ca ne marche pas plus

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    je suis pas un imbécile fini, je suis juste un peu con
    Qu'est ce que tu viens d'écrire sur la morale?
    Le code fourni pour t'aider est fonctionnel et testé 36 fois sur mon fichier où ma feuille s'appelle bien Feuil1. (Le nom sur la feuille d'excel et non le CodeName qui apparait dans l'éditeur vba)

    Si tu estimes que TA feuille de TON classeur sur lequel tu testes s'appelle Feuil1, l'erreur n'aurait pas eu lieu.
    Si tu as ouverts plusieurs classeurs, peut être le classeur actif est autre.
    Pour cela, remplace par ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkbook.Worksheets("Feuil1") 'Adapte ici le nom de ta feuille

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/11/2008, 16h01
  2. Changer la couleur de la sélection dans une Trackbar
    Par Kindersurpriz dans le forum Langage
    Réponses: 3
    Dernier message: 18/08/2008, 08h08
  3. Réponses: 2
    Dernier message: 02/03/2007, 22h20
  4. Rediriger vers une page après sélection dans un select
    Par belzeluc dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 07/11/2006, 22h32
  5. Redirection automatique lors d'une sélection dans un Select
    Par MiJack dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2004, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo