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 :

Ligne suivant sans cesse.


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2007
    Messages : 121
    Points : 105
    Points
    105
    Par défaut Ligne suivant sans cesse.
    Bonjour,

    Mon chef m'a demander de gérer des stocks, pour cela je recopie des tonnes de numéros de commande et de date dans un tableau excel,
    j'essaye depuis plusieurs jours de créer une maccro pouvant vérifier d'éventuelles erreurs de frappe.

    j'aimerai que la maccro compare deux date type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("b3") > Range("d3") Then
    Puis la case ce colorie si je me suis trompé type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Range("b3").Select
    With Selection.Interior
        .ColorIndex = 40
        .Pattern = xlSolid
    End With
       End If
    Mais ce que je ne sais pas faire c'est faire descendre le contrôle :
    Incrémenter 1 à b3 et C3.
    car mon tableau ne cesse de grandir et je ne peux pas répéter indéfiniment la formule type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range ("b4") > Range("c4")
    Range ("b5") > Range("c5")
    ect...

    Je vous remercie grandement pour votre aide,
    en espérant avoir été assez clair et précis

    PS: je pense que la comparaison entre les dates devrait s'arrêter lorsque les cases sont vide pour ne pas à descendre sans cesse.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    Avant d'aborder une macro pour ça, essaies les MFC :
    tu sélectionnes la colonne B (B1 devient la cellule active)
    menu Format>>Mise en Format conditionnelle
    condition 1
    case 1 ; la formule est
    case 2 : =($C1>0)*($B1>$C1)
    Format : fond rouge, police jaune (par exemple)
    tu valides
    Si une cellule de la colonne B est strictement supérieure à la valeur de C de la même ligne et que C est supérieure à 0 (ni nulle ni négative), la cellule deviendra rouge

    Tu peux tester.
    tu peux même faire un copier le format de la colonne B sur la colonne C

    Si ça ne te convient pas, on peut le faire par macro, mais dans ce cas, il faut prévoir la commande d'exécution de la macro : soit par lancement "manuel" (menu macros ou bouton), soit par lancement automatique (si on change la valeur de B ou de C).

    Mais pour un fonctionnement comme tu le décris, la MFC me semble préférable.
    A+

  3. #3
    Membre régulier Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 77
    Points
    77
    Par défaut
    Il suffit de faire une boucle qui se répete

    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
     
    Sub test()
    Dim ligne_debut As Integer
    Dim ligne_fin As Integer
    ligne_debut = 3
    ' va récupérer l'indice de la derniere ligne ou la cellule A est non vide
    ligne_fin = Range("A65535").End(xlUp).Row
    For i = ligne_debut To ligne_fin
        If Range("B" & i) > Range("D" & i) Then
            Range("B" & i).Select
            With Selection.Interior
                .ColorIndex = 40
                .Pattern = xlSolid
            End With
        End If
    Next i
    End Sub
    Ce code ne marchera QUE si la colonne A de ton fichier contient les dates.
    Sinon il faut que tu arrives a récupérer la derniere ligne ou il y a une date, et tu attribues l'indice a la ligne a ligne_fin
    Aurore //Gold Fish Memory Girl

  4. #4
    Membre régulier
    Homme Profil pro
    Gérant
    Inscrit en
    Septembre 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gérant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Septembre 2007
    Messages : 121
    Points : 105
    Points
    105
    Par défaut
    Je vous remerci grandement pour votre aide
    Vous m'avez vraiment bien renseigné

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. A la ligne suivante sans passer par #13#10 dans un richedit
    Par Ardely dans le forum Composants VCL
    Réponses: 13
    Dernier message: 24/08/2007, 17h58
  2. Comment allez vers la ligne suivante d'un dbgrid
    Par Karim1971 dans le forum Bases de données
    Réponses: 7
    Dernier message: 12/05/2006, 11h57
  3. Radiogroup qui se sélectionne sans cesse
    Par chourmo dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/03/2006, 07h57
  4. VBA EXCEL - Sélection d'une ligne suivant saisie
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 48
    Dernier message: 15/11/2005, 17h41
  5. Tracer une ligne droite sans les interruptions
    Par Stef784ever dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 25/11/2002, 01h22

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