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 :

[VBA-E] Comparer des valeurs dans des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut [VBA-E] Comparer des valeurs dans des cellules
    Salut à tous,

    je suis nouvel utilisateur de VBA et je dois dire que je galère pas mal. Généralement, même si je mets beaucoup de temps, j'arrive à créer qq macros mais là j'ai un bug sur qq chose qui doit pas être difficile pourtant.

    En fait, je souhaite créer une macro qui permet de comparer toutes les cellules d'une plage de données avec un chiffre et de renvoyer automatique un message d'alerte quand une des cellules varie plus que le chiffre.
    (par exemple de A1 à A10, comparer tous les chiffres de cette plage de données avec le chiffre 1 en valeur absolue et renvoyer un message si une des cellules a un chiffre non compris entre -1 et 1)

    merci à tous pour toute aide, je vais continuer à lire les faq.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Je propose cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i= 1 TO 10
    IF abs(Range("A" & i).Value)  <  1 THEN
    Msgbox "Valeur comprise entre -1 et 1"
    End if
    Next i
    Je n'ai pas testé le code mais ça me parait pas trop mal

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    Bonjour
    pour reprendre ton exemple peut être qq chose comme ca?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub comparer()
    Dim i As Integer
    Dim a As Variant
     
    a = 1
    For i = 1 To 10
        If Abs(Worksheets("nom de ta feuille").cells(i, 1).Value) > a Then
        MsgBox ("Attention la valeur entrée est n'est pas comprise entre -" & a & "et " & a)
        End If
     
    Next i
     
    End Sub
    après si tu veux empêcher qu'une valeur autre soit écrite, je te conseille d'utiliser un While plutot qu'un if avec un inputbox
    dis moi si ca va
    rémi

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 103
    Points : 98
    Points
    98
    Par défaut
    bon, j'ai rien dit

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    salut à vous 2 et merci pour vos réponses.
    En regardant vos réponses, je me dis que je me suis peut être mal exprimé ou alors que j'ai vraiment du mal avec vba...lol
    je ne pense pas que vos réponses soient ce que je recherche mais je peux me tromper.

    je vous réitère ma question avec plus de précisions et si vous me dites que c le meme prog applicable alors j'arrete vba :p

    dans mon fichier excel, j'ai sélectionné une plage de cellule allant de D2 à D20 et je l'ai intitulé "tab". Cela ressemble à ça:

    0.16
    0.2
    0.5
    0.4
    -0.3
    -0.4
    0.7
    -0.8
    0.26

    truc dans ce genre.

    ce que je souhaite, c qu'un message apparaisse si une de ces cellules a un chiffre non compris entre -0.5 et 0.5. Dans cet exemple, ce serait les 2 chiffres en gras qui sont supérieurs à la variation max.
    COmment faire pour comparer ma plage de cellule avec un chiffre et afficher qu'on doit effectuer des changements sur ces cellules (ici dans l'exemple, les 2 chiffres en gras).

    Je galère vraiment, 2 jours que j'essaie, et en plus l'aide de microsoft est vraiment trop compliqué avec des columnDifference (comparison: ) etc...

    bref merci par avance pour votre aide

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Le code que l'on t'a donné s'applique dans ton cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For i= 1 TO 20
    IF abs(Range("D" & i).Value)  <  0.5 THEN
    Msgbox "Merci de modifier la valeur de la cellule D" & i
    End if
    Next i
    Pour les colonnes D1 à D20, on prend la valeur absolue et on compare à la valeur 0,5. Si elle est inférieure, on affiche un message.

    Après tu peux voir pour généraliser un peu plus le code.

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    comme dis orangebox
    nos codes sont valables
    ce qu'il font:
    ils parcourent cellule par cellule et regarde à chaque fois si le nombre contenu dans la cellule est plus grand en valeur absolue que le nombre prédéfini donc regarde si le nombre est bien compris entre par ex -0.5 et +0.5
    si le nombre est plus grand il y a un msg d'erreur qui apparait
    voili voila
    mais non n'arrete pas la vba! ca supprime bcp de tache super relou qd mm
    rémi

  8. #8
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    apres si ton pb c'est que tu veux travailler sur une plage
    j'imagine que qd tu la sélectionne tu défini bien une ligne de début, de fin et une colonne
    stocke ces lignes pour les utiliser avec ces codes

  9. #9
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par gruget
    comme dis orangebox
    nos codes sont valables
    ce qu'il font:
    ils parcourent cellule par cellule et regarde à chaque fois si le nombre contenu dans la cellule est plus grand en valeur absolue que le nombre prédéfini donc regarde si le nombre est bien compris entre par ex -0.5 et +0.5
    si le nombre est plus grand il y a un msg d'erreur qui apparait
    voili voila
    mais non n'arrete pas la vba! ca supprime bcp de tache super relou qd mm
    rémi
    Dans une grande boite, meme enorme que je ne citerai pas par bonté..., pas mal de prog de suivi de prod sont codés en VBA pour Excel et Access...

    Je vais pas me plaindre, ça me permet de débuter en tant que développeur de commencer doucement

    Bref oui le vba ça permet de faire pas mal de choses
    Mais pas les groupes de contrôles
    "Ne soyez rien, devenez sans cesse"

  10. #10
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    pour ta plage tu peux donc fair ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
     
    Set tabl = Range(Worksheets("nom de ta feuille").cells(1, 1), Worksheets("nom de ta feuille").cells(20, 1))
    a = 1
    For Each cell In tabl 
        If Abs(cell.Value) > a Then
        MsgBox ("Attention la valeur entrée est n'est pas comprise entre -" & a & "et " & a)
        End If
    Next cell
    end sub
    attention de ne pas utiliser le mot tab qui a une signification dans VBA
    rémi

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ok ok merci à tous.

    je viens de tester la macro et en plus je viens de comprendre.
    Toujours plus intéressant de comprendre.
    j'ai utilisé le dernier code, à savoir celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
     
    Set tabl = Range(Worksheets("nom de ta feuille").cells(2, 12), Worksheets("nom de ta feuille").cells(24, 12)) 
    'car ça commence à la ligne 2 jusqu'à 24 dans la colonne L'
    a = 0.3
    For Each cell In tabl 
        If Abs(cell.Value) > a Then
        MsgBox ("Attention la valeur entrée est n'est pas comprise entre -" & a & "et " & a)
        End If
    Next cell
    end sub
    Par contre, j'ai un souci même si j'ai vérifié que la macro mache bien sur une autre plage de cellule.
    Mon problème est que les cellules de "tabl" contiennent une formule que j'ai faite, qui est surement fausse et qui est la suivante:
    =SI(RechercheV(A3,Feuil1!$A$2:$b$26,2,faux),RechercheV(A3,Feuil1!$A$2:$b$26,2,faux)-I3),("non trouvé"))

    vu vos niveaux, vous la comprenez facilement, mon problème est que lorsque la valeur cherchée n'est pas trouvée, au lieu de renvoyer "Non trouvé", cela renvoie #N/A# et du coup la macro bug lorsqu'il s'agit la cellule contient #N/A# , enfin c ce que j'ai supposé puisque lorsque j'ai remplacé N/A par un chiffre, ça ne buggait plus.

    ma formule est elle fausse ?

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    dsl pour tout à l'heure, je ne voulais pas dire que vos codes étaient faux mais plus que je m'étais mal exprimé :p
    Et gruget, cool ta réponse, écrit en français au lieu de la programmation, ça m'a vachement aidé.
    J'essaie de voir comment corriger ma formule mais j'ai encore des questions:
    avec cette macro, quand il y a une valeur qui varie plus que le chiffre voulu, il y a le msg inscrit dans msgbox qui apparait...jusqu'à là je suis.
    Mais comment faire pour que le message qui apparait indique où sur quelle cellule est la variation. Avec peu de ligne, c facile à chercher mais si je veux appliquer cette macro à un grande nbre de ligne, comment faire à part regarder ligne par ligne.
    Serait ce possible qu'il y ait une alerte, genre une fleche rouge qui s'affiche en face de la cellule concernée et que ça se fasse automatiquement sans avoir besoin de cliquer sur le bouton inséré dans excel ???

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    j'ai pas tout suivi mais pour ta formule, utilise un si est erreur pour dédouaner
    ==SI(ESTERREUR(SI(RechercheV(A3,Feuil1!$A$2:$b$26,2,faux),RechercheV(A3,Feuil1!$A$2:$b$26,2,faux)-I3),("non trouvé"));"*";SI(RechercheV(A3,Feuil1!$A$2:$b$26,2,faux),RechercheV(A3,Feuil1!$A$2:$b$26,2,faux)-I3),("non trouvé"))
    *là, tu place ce que tu veux au cas ou la valeur soit na, je propose 0 mais tu peux aussi faire vide "", mais pas de truc genre texte, sinon, c'est pas bon

  14. #14
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    alors
    pour ta fonction rechercheV (que je ne connaissais pas avant) j'ai regardé dans l'aide Excel vu l'argument Faux que tu utilises, si la fonction ne trouve pas la valeur, elle va renvoyer #N/A
    plusieurs solutions sont possibles:
    déja mettre des tests si comme le propose alsimbad (jai pas trop regardé ce qu'il ta mis mais ca semble pas mal)
    regarde l'exemple 3 de l'aide ou il ya une formule qui correspond à ca:
    =SI(ESTNA(RECHERCHEV(5;A2:E7;2;FAUX)) = VRAI; "Employé introuvable"; RECHERCHEV(5;A2:E7;2;FAUX))
    Si un employé avec l'ID 5 existe, affiche le nom de l'employé ; sinon, affiche le message « Employé introuvable ». (Buchanan)
    La fonction ESTNA renvoie une valeur VRAI lorsque la fonction RECHERCHEV renvoie la valeur d'erreur #NA
    ou bien rajouter des fonctions de test dans ta macro
    du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Isnumeric(cell.value)=true then
        If Abs(cell.Value) > a Then
        MsgBox ("Attention la valeur entrée est n'est pas comprise entre -" & a & "et " & a)
        End If
    end if
    en fait le pb venant du fait que la fonction abs ne fonction que si ta cellule contient un nombre, j'ai rajouté une fonction qui teste que ta valeur est bien numérique avant de lancer le deuxième test


    Ensuite pour l'histoire des cellules déja tu peux remplacer la msgbox par celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        MsgBox ("Attention la valeur entrée dans la cellule " & cell.Address & " n'est pas comprise entre -" & a & "et " & a)
    ensuite si tu veux en rajouter encore tu peux genre colorier ta cellule en rouge en rajoutant cette ligne apres la msgbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell.Interior.ColorIndex = 3
    voili voila
    rémi

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ok merci à tous les 2, je vais m'y remettre et voir si ça marche, mais y'a pas de raison.
    bon week end à tous

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    alors, j'amène des news. super pour la formule sous excel, le texte s'affiche désormais .
    concernant la macro:
    1.

    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
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
     
    Set tabl = Range(Worksheets("Pro").cells(2, 12), Worksheets("Pro").cells(24, 12)) 
    'car ça commence à la ligne 2 jusqu'à 24 dans la colonne L'
    a = 0.3
    For Each cell In tabl 
        If IsNumeric(cell.value)=TRUE Then
        If Abs(cell.Value) > a Then
        MsgBox ("Attention la valeur située dans la cellule " & cell.address & " a une valeur supérieure à " & a & "en valeur absolue. Cellule concernée est en rouge)
        cell.interior.ColorIndex=3
        End If
    Next cell
    end sub
    j'ai bien compris que abs ne marche qu'avec des chiffres et donc bug lorsqu'il rencontre du texte.
    J'ai donc mis comme expliqué If IsNumeric(cell.value)=TRUE Then en rouge ci dessus mais ça bug, avec le msg suivant: next sans for!!!

    2. autre question: est-on obligé de cliquer sur le bouton créé sur excel afin d'activer la macro ou bien peut-on faire en sorte que la macro se fasse seule automatiquement (reste à fixer quand? en continu ce serait pas top :s)

    3. aussi est ce que c possible d'avoir un msg, un seul et unique quand il n'y pas de problème, genre "ok". J'ai essayé d'en introduire un mais le hic est que le msg s'affiche pour chaque ligne puisque c entre for each cell...next cell..
    Et je ne vois pas comment on pourrait faire, le mettre apres next ne servirait pas je pense

    voilà des questions encore :p

  17. #17
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    alors
    1) tu as oublié un et un écris ca:
    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
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
     
    Set tabl = Range(Worksheets("Pro").cells(2, 12), Worksheets("Pro").cells(24, 12)) 
    'car ça commence à la ligne 2 jusqu'à 24 dans la colonne L'
    a = 0.3
    For Each cell In tabl 
        If IsNumeric(cell.value)=TRUE Then
           If Abs(cell.Value) > a Then
           MsgBox ("Attention la valeur située dans la cellule " & cell.address & " a une valeur supérieure à " & a & "en valeur absolue. La cellule concernée est en rouge") 'ici le " oublié
           cell.interior.ColorIndex=3
           End If
        End If
    Next cell
    end sub
    2) la question est justement de savoir quand est-ce que tu veux que la macro s'execute
    des qu'une valeur des plages est modifiée?
    lors de l'execution d'une autre fonction?
    au démarrage?
    etc....

    3)pour ce 3eme pb je rajoutrais une variable booléan qui s'initialise en true et ensuite n'est changée en false que si il détecte une erreur
    tu testes ensuite ta variable à la fin et affiche le msg correspondant
    ca donnerais:
    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
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
    Dim titi As Boolean
     
    Set tabl = Range(Worksheets("Pro").cells(2, 12), Worksheets("Pro").cells(24, 12))
    'car ça commence à la ligne 2 jusqu'à 24 dans la colonne L'
    a = 0.3
    titi = True
    For Each cell In tabl
        If IsNumeric(cell.Value) = True Then
           If Abs(cell.Value) > a Then
           MsgBox ("Attention la valeur située dans la cellule " & cell.Address & " a une valeur supérieure à " & a & "en valeur absolue. La cellule concernée est en rouge")
           cell.Interior.ColorIndex = 3
           titi = False
           End If
        End If
    Next cell
    If titi = True Then
    MsgBox ("Tout va bien")
    End If
     
    End Sub
    et c bien après le next qu'il faut afficher ton msg si tu ne veux pas qu'il le fasse à chaque fois
    rémi

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    MERCI !

    Pour le 1), je pensais qu'on avait besoin que d'un seul end if à la fin, comme un end sub mais c pas le cas...le métier qui rentre )

    Pour le 2), en fait ma feuille excel sera mise à jour tous les matins, enfin j'essaie en même temps de créer une macro qui va chercher dans un logiciel des données à importer dans excel, et j'aimerais donc que la macro s'active autimatiquement à chaque nouvelle mise à jour. C pas facile, non ?
    enfin c pas mon souci premier actuellement

    Pour le 3), je vais essayer comme tu as dit mais peux tu m'expliquer plus en détail le boolean car je ne comprends pas bien comment il marche.dsl
    voilà à quoi ressemble mon code désormais

    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
    51
    52
    53
     
     
    Sub comparer()
     
     
     
    Dim a As Variant
     
    Dim tabl As Range
     
    Dim titi As Boolean
     
     
     
    Set tabl = Range(Worksheets("Pro").Cells(2, 12), Worksheets("Pro").Cells(24, 12))
     
    a = range("$N$2").value
     
    titi = True
     
     
     
    For Each cell In tabl
     
        If IsNumeric(cell.Value) = True Then
     
            If Abs(cell.Value) > a Then
     
            cell.Interior.ColorIndex = 3
     
            titi = False
     
            Else
     
            cell.Interior.ColorIndex = 0
     
            End If
     
        End If
     
    Next cell
     
     
     
    If titi = True Then
     
    MsgBox ("Aucune variation significative!")
     
    End If
     
     
     
    End Sub
    il est bcp mieux qu'hier
    par contre actuellement, seules les cellules dont la valeur numérique est supérieure à ma case N2 s'affiche en rouge.
    J'aimerais améliorer ça, je m'explique.
    je compte faire en sorte d'adapter cette macro à d'autres fichiers, donc au lieu de sélectionner une plage de cellules comme dans le code de L2 : L24, je veux que cela s'applique à toute la colonne L.
    En s'appliquant à toute la colonne L (suffit-t-il de mettre Cells("L") ??? ), j'aimerais que ma cellule s'affiche en rouge pour les cellules dont la valeur numérique est supérieure à ma case N2 s'affiche en rouge (c ok puisque ça se fait actuellement) mais aussi en rouge lorsque la cellule ne contient pas une valeur numérique, par exemple quand y'a ecrit "Non trouvé" (cf.formule décrite page précédente!!!) ou autre.
    Par contre, que ça reste en blanc quand c ok ("ce qui est le cas actuellement) mais aussi quand la cellule est vide.

    j'espère avoir été clair :s
    En fait

  19. #19
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    alors
    pour le 2) ca méritera que tu te penches dessus un peu plus
    soit ca se fait à chaque lancement de la feuille
    soit tu lappelle quand tu met à jour ton fichier
    soit il faut que tu crées une tache programmé

    pour le 3)
    le booléan une variable qui peut prendre la valeur vrai ou fausse seulement
    je l'initialise à vrai et je change sa valeur uniquement si le prog a reperé une cellule ou le nombre est trop grand
    ainsi si aucune cellule n'a été repéré sa valeur reste true et le msg de la fin s'affiche
    sinon il ne s'affiche pas

    Pour ton truc de cellule pas numérique il faut mettre un else à ton if isnuméric.... comme ca:
    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
    Sub comparer()
    Dim a As Variant
    Dim tabl As Range
    Dim titi As Boolean
     
    Set tabl = Range(Worksheets("Pro").cells(2, 12), Worksheets("Pro").cells(24, 12))
    'car ça commence à la ligne 2 jusqu'à 24 dans la colonne L'
    a = 0.3
    titi = True
    For Each cell In tabl
        If IsNumeric(cell.Value) = True Then
           If Abs(cell.Value) > a Then
           MsgBox ("Attention la valeur située dans la cellule " & cell.Address & " a une valeur supérieure à " & a & "en valeur absolue. La cellule concernée est en rouge")
           cell.Interior.ColorIndex = 3
           titi = False
           End If
        Else
            cell.Interior.ColorIndex = 3
        End If
    Next cell
    If titi = True Then
    MsgBox ("Tout va bien")
    End If
     
    End Sub
    pour l'histoire des colonnes tu peux sélectionner un colonne entière avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set tabl = Worksheets("Pro").Column(numéro de ta colonne)
    mais vu que aprsè tu parcours toute ta colonne je te conseille plutot d'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ligne_fin= Worksheets("Pro").range("A65536").end(xlup).row 'renvoie la dernière ligne remplie de la colonne A
    Set tabl = Range(Worksheets("Pro").cells(2, 12), Worksheets("Pro").cells(ligne_fin, 12))
    en remplacant par les colonnes que tu veux
    rémi

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    ok ok merci Rémi !
    jai une dernière question mais c la plus facile de toute
    quand j'ai un bug, je n'arrive jamais à voir d'où vient le problème.
    quand je fais pas à pas détaillé, j'ai seulement une ligne qui se met en jaune et après je dois naviguer avec mon curseur pour voir ce qu'il se passe, genre a=nothing.
    Y'a pas une façon de faire pour y voir plus clair ?
    Je dis ça car en lisant sur d'autres discussions sur ce forum j'ai cru comprendre que pour certains cétait plus explicite.
    ça l'est peut etre quand la macro est plus longue ?!

    voilà, merci encore, c super cool !

    BON WEEK END à toi (et tous les autres qui m'ont aidé)

    PS: si je pouvais faire un truc pr te remercier, je l'aurai fait mais je ne pense pas :p
    donc un GRAND MERCI & un BON WEEK-END

Discussions similaires

  1. Excel - Mettre des valeurs dans les cellules
    Par shuya dans le forum Débuter
    Réponses: 1
    Dernier message: 10/02/2009, 09h45
  2. [WD11] Insérer des valeurs dans des cellules de Table
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 8
    Dernier message: 29/09/2008, 12h55
  3. DataGridView et format des valeurs dans les cellules
    Par saultapt dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/06/2008, 16h55
  4. [OleExcel]Entrer des valeurs dans des cellules
    Par Masmeta dans le forum C++Builder
    Réponses: 21
    Dernier message: 06/12/2006, 08h39
  5. Inserer des valeurs dans une cellule
    Par azerty53 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/09/2006, 16h27

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