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 :

Code a revoir


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut Code a revoir
    Bonjour a tous et toutes, forum bonjour,

    Voila ce petit code me permets de changer la premiere lettre en majuscule gras et rouge dans la plage G2:H27. MAIS vous l'aurez deviner souci.

    le code est a mon avis mal construit et il ne repond pas correctement a la demande.

    Si quelqu'un svp veut bien me modifier le code, ca serai super gentil, car je ne trouve pas la cause

    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
    '*** CODE PREMIERE LETTRE MAJUSCULE GRAS et ROUGE ZONE G2:H27 
    Private Sub Worksheet_Change(ByVal Target As Range) 
    With Target 
    If Not Intersect(Target, [G2:H27]) Is Nothing Then 
    If .Count <> 1 Then Exit Sub 
    Application.EnableEvents = False 
    .Font.ColorIndex = 1 
    .Font.Bold = False 
    With Target.Characters(1, 1) 
    .Font.ColorIndex = 3 
    .Font.Bold = True 
    .Text = UCase(.Text) 
    End With 
    Application.EnableEvents = True 
    End If 
    If Not Intersect(Target, [G2:H27]) Is Nothing And .Count = 1 Then 
    If Target = "" Then 
    .Font.ColorIndex = 1 
    .Font.Bold = False 
    End If 
    End If 
    End With 
    End Sub
    Merci a vous et de votre temps, une bonne journée

    Raymond

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Ce code remplie exactement sont office sans accro, ni soucis

    Modifie une cellule il met la première lettre en rouge. Si tu modifie plusieurs cellule il ne fait rien (caopier coller par exemple) tu le lui demande toi meme avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Count <> 1 Then Exit Sub
    (l'enlever tels quel pourrais poser problème attention)
    Il ne s'applique que sur les cellule que l'on modifie et pas celle qui été déjà remplie puisqu'ilest dans Worksheet_Change

    Non sérieusement y a rien a redire je me le met de coté il pourrait me servir.

    Après si tu nous précise ce que tu attend de ton code, on peut peut être voir comment le modifier. Mais là il est très bien tel quel.
    Tu pourrais juste a la rigueur insérer ton deuxième test dans le premier et utiliser un else, mais ca ne changerais rien au résultat

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Salut Krovax, forum,

    Si mon code peut te servir, hé bien sert toi, je blague, bon merci pour ta reponse, c'est sympa.

    comme tu me le propose si gentillement, je veux bien voir cette modif, ca pourrai me servir egalement plus tard, pour ma future gestion de schémas electronique.

    Tu pourrais juste a la rigueur insérer ton deuxième test dans le premier et utiliser un else, mais ca ne changerais rien au résultat
    ok pour le meme resultat

    juste If Not Intersect(Target, [G2:H27]) on peut pas faire autrement svp

    Merci et au plaisir de te relire

    Raymond

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    tu peux tester target.row et target.column mais c'est bien moins élégant.

    sinon voila une version ou tu peux commencer ta ligne par un chiffre et qui permet de modifier plusieurs cellule d'un coup. La je ne vois pas ce que tu peux vouloir de plus

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cel As Range
    For Each cel In Target
        With cel
            If Not Intersect(Target, [G2:H27]) Is Nothing Then
            If .Count <> 1 Then Exit Sub
                If cel = "" Then
                    .Font.ColorIndex = 1
                    .Font.Bold = False
                Else
                    Application.EnableEvents = False
                    .Font.ColorIndex = 1
                    .Font.Bold = False
                    With .Characters(1, 1)
                    .Font.ColorIndex = 3
                    .Font.Bold = True
                    If Not IsNumeric(Left(cel.text, 1)) Then
                        .text = UCase(.text)
                    End If
                    End With
                    Application.EnableEvents = True
                End If
     
            End If
        End With
    Next
    End Sub

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2008
    Messages
    704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2008
    Messages : 704
    Par défaut
    Re Krovack forum

    Merci c'est très sympa, j'ai essayer ton code ca marche bien.

    Pour répondre a ta question, je ne voulais rien de plus, c'est que j'apprends VBA et toutes les facons de faire sont interressantes, surtout les differentes manière d'arriver au meme resultat.

    Mais tout ca n'est pas en vain, c'est deja imprimer et classer,

    En fait le souci que je rencontre, lorsque j'opère en colonne G2:H27 des que je valide une entrée, c'est bon.

    MAIS quand j'ecris apres donc dans une autre colonne, l'écriture reste en gras et rouge et ca c'est chiant, c'est pourquoi j'ai voulu tester autrement.

    Donc pour le test en utilisant Target.Row et Target.Column pourquoi pas essayer j'aurai appris quelque chose comme ca, grace a toi et puis ca peut reservir.
    Comme tu veux si tu a le temps.

    En tout cas je te remercie, c'est super sympa a toi de m'aider.

    Bonne apres midi

    Raymond

Discussions similaires

  1. [XL-2003] Code VBA à revoir pour Mois et Année juxtaposés
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/10/2014, 17h29
  2. [MySQL] Optimisation ou revoir le code
    Par networkinfo dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 17/04/2013, 17h31
  3. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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