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 :

Les conditions dans excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut Les conditions dans excel
    bonjours , je ne connais pas tres bien excel et je dois dans le cadre de mon stage, ecrire une macro :
    -J'ai fait un petit dessin en esperant que vous compreniez ce que je veux .



    C'est tres schematique mais la macro dois parcourir toutes la colonne 1 , et en fonctions des status recontres ecrire le resultat dans la colonne 2.
    J'espere que vous pourrez m'aider , en tout cas je vous remercie d'avance.

  2. #2
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour,

    Ton cas nécessitera l'utilisation d'une boucle.
    Ce lien devrait t'aider : http://silkyroad.developpez.com/vba/boucles/

  3. #3
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    curieux qu'il te failles une macro une simple formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(ou(Ax="test";Ax="Pre test");"Ok";error)
    à mettre en colonne B et à tirer vers le bas

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Alors merci pour vos conseils!!!Daranc j'ai essaye ta formule , mais dans une autre colone que A (exemple D). J'ai un message d'erreur du type #NAME?.J'ai remplace les Ax par Dx mais je pense que c'etait pas sa la bonne manip .

    Sinon je crois que je dois utiliser une macro pour que cette "formule" fonctionne directement a l'ouverture du classeur.

    Tirer la formule sur tout la colonne c'est simple mais dans mon cas les tableaux font plusieurs milliers de lignes donc sa prend trop de temps.

    Une idee de code pour autmatiser tout sa ?
    J'attend vos reponses avec impacience n'essitez pas a donner votre avis.

    Cordialement
    Sebastien

  5. #5
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour,

    Dans la formule de Daranc, il me semble que le mot error doit être entre Guillemets.

    par ailleurs, le x de Ax est le numéro de ligne. Donc, pour qu'elle fonctionne il faut l'adapter.
    Ainsi si tes données sont en colonne A et commencent ligne 2
    il te faut saisir en cellule B2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(OU(A2="test";A2="Pre test");"Ok";"NOK")
    Enfin pour ce qui est du code, ce serait bien que tu creuses un peu avec le lien donné par exemple. La macro pourrait faire :
    pour toutes les cellules de A1 à la dernière ligne utilisée de A
    si la valeur de la cellule contient test alors la valeur dans la colonne B égale OK

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    J'ai toujours un soucis , la formule ne fonctionne pourtant je pense avoir respecte la syntaxe. Je suis sur un excel Allemand donc au niveau l'aide dans excel je ne coomprend pas grand chose .

    http://imgur.com/z4ya7.jpg

    Sinon pour la macro je vais suivre tes instructions je vais essayer de decouvrir par moi meme mais je pense que j'aurais rapidement de nouvelle questions .

  7. #7
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour,

    La syntaxe est bonne pour un Excel en français. je ne sais pas comment sont traduites les fonction SI et OU en allemand.

    les mots ou et si sont restés en minuscules dans ta formule ce qui veut dire que Excel ne les reconnaît pas.

    par macro tu te heurteras à la même difficulté.
    Essaye de les traduire. ci-joint un fichier avec des traductions des fonctions Excel
    traduction fonctions.xls

  8. #8
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Merci "ouisansdoute" sa fonctionne effectivement avec la syntaxe allemande, merci aussi pour le fichier des traductions de fonction sa me sera utile !!.

    Je vais attaque la macro , je n'en est jamais ecrit, si jamais tu as un petit model a me montrer sa serait avec plaisir @+.

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    essayes peut-etre avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ob(oder(.......);"bon";"mauvais")
    ce n'est que de la traduction
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    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
    Sub Makro1()
    '
    ' Makro1 Makro
    ' 
    '
     
    '
        Range("E4").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(OR(RC[-1]=""Nigeria"",RC[-1]=""Allemagne""),""Bon"",""mauvais"")"
        Range("F4").Select
        ActiveSheet.Paste
        Range("G11").Select
     
    End Sub
    C'est le code de la formule que l'on a teste precedement maintenant faut la faire fonctionner dans un intervalle de lignes donc surement utiliser des boucles?

  11. #11
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Un canevas pour commencer :
    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
    Sub Remplissage()
    Dim i As Integer
    ' Cells(ligne,colonne) donne les référence d'une cellule. 
    ' On pourrait aussi écrire Range("A" & i)
    ' ActiveSheet.UsedRange.Rows.count donne le nombre de lignes utilisées.
    ' Attention si le nombre de lignes ne commence pas en ligne 1 
    ' ou s'il existe dans le tableau des lignes vides
     
    For i = 1 To ActiveSheet.UsedRange.Rows.Count
     
        If Cells(i, 1).Value = "Toto" Or Cells(i, 1).Value = "Tata" Then 
            ' Traitement 1
        Else
            ' Traitement 2
        End If
     
    Next
     
    End Sub

  12. #12
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    je note
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.UsedRange.Rows.count
    je connaissait pas intéressant tout plein

  13. #13
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour Daranc,
    j'ai mon pense bête pour les numéros de ligne ou les adresses selon le cas de figure :
    Nombre de lignes renseignées d'une feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbLigne = ActiveSheet.UsedRange.Rows.Count
    Première ligne renseignée de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PremiereLigne = ActiveSheet.UsedRange.Row
    Dernière ligne de la plage d'une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range(Cel).CurrentRegion.End(xlDown).Row
    Adresse de la plage d'une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage = Range("A15").CurrentRegion.Address(False, False) 'row absolu False, column absolu : False)
    Dernière ligne de la colonne (2003 et antérieur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A65536").End(xlUp).Row
    Dernière ligne de la feuille pour la colonne (col D)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dernière ligne = Cells(Columns(4).Cells.Count, 4).End(xlUp).Row
    Num de la dernière ligne renseignée de la colonne (pour la plage de la colonne à laquelle appartient C3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("C3").End(xlDown).Row
    Dernière ligne d'une plage de cellules renseignées de la feuille
    S'il existe ou non des lignes vides, donne la dernière ligne absolue. Attention si des lignes ont été supprimées, enregistrer le document pour que cette commande donne le n° juste)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
    adresse absolue de la dernière cellule renseignée de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AdresseAbsolue = Range("A1").SpecialCells(xlCellTypeLastCell).address
    Déclinable également pour les columns

  14. #14
    Membre Expert

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Billets dans le blog
    1
    Par défaut
    Pense bête , honteusement pompé et imprimé dans la foulée
    merci

  15. #15
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Si mon tableau ne commence pas a la ligne 1 , je change la valeur de i.
    Exemple mon tableau commence ligne 5 colonne G.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 5 To ActiveSheet.UsedRange.Rows.Count
     
        If Cells(i, 6).Value.....?

  16. #16
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Bonjour barbie,

    Oui c'est tout-à-fait ça.

  17. #17
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Bonjours "ouisansdoute", je commence a voir quelques notions maintenant avec les macros ( pas beaucoup encore ) , en partie grace a toi.
    Alors je viens d'avoir les consignes exacte de ce que dois realiser ma macro c'est un peu plus complexe que ce que j'ai realise jusqu'a present mais avec votre aide je devrais y arriver. Jte donne un apercu :

    http://imgur.com/Kv7Qt.jpg

    Comme tu peux le voir sa marche par groupe de reference, la macro doit regarder tous les status d'un groupe de reference .
    Des qu'il y a un status "Develop ou Design" le resultat doit etre "not Allow" dans la derniere ligne du groupe de reference.
    Si l'un des 3 autres status on marque "Allow"

    Sa dois etre bien plus dure a programmer , il y a maintenant 2 colonnes qui doivent remplir des conditions.

    les couleurs ne sont pas necessaire .

    Pour l'instant j'ai encore ton code precedent comme base je vais essayer de l'adapter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Remplissage()
    Dim l As Long
     
    For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
     
        If Cells(l, 5).Value = "Verify" Or Cells(l, 5).Value = "Cancel Pending" Or Cells(l, 5).Value = "Not Assigned" Then
             Cells(l, "F") = "allow"
        Else
             Cells(l, "F") = "not allow"
        End If
     
    Next
     
    End Sub
    J'attends tes premieres impressions^^^!

  18. #18
    Membre émérite
    Avatar de ouisansdoute
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    931
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 931
    Par défaut
    Ci-joint un petit fichier qui fonctionne avec la même logique que le tien.
    Le tout consiste à l'adapter à ton cas.
    remplissage.zip
    Lorsque tu veux illustrer, met plutôt un fichier joint, ça prend moins de place à l'écran.

  19. #19
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    Grand merci l'exemple est vraiment bien adapte , je vais peut etre reussir a finir la, jte tien au courant merci pour tout.

  20. #20
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 26
    Par défaut
    J'ai effectivement un probleme si on met la condition qui ne devrais pas etre autorise sur la derniere ligne il ne la prend pas en compte et la considere comme bonne (tu peux essayer avec le programme que tu me donne sa donne la meme chose .

    Aussi au cas ou je rencontre une ligne vide j'avais penser mettre un
    If Y= ""
    Valeur=""
    mais sa ne marche pas nom plus.

    bonne appetit @+

Discussions similaires

  1. Les SmartArt dans Excel 2007
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 22/08/2007, 19h58
  2. Requete condition dans excel
    Par jokenjo dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 22/08/2007, 19h32
  3. Réponses: 3
    Dernier message: 09/02/2007, 11h31
  4. Les conditions dans Dreamweaver
    Par zeugzeug dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/01/2007, 12h48
  5. [VBA-E]Formulaire word, récupérer les données dans excel
    Par sablier dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 30/05/2006, 07h38

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