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 Excel]Probleme de condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut [VBA Excel]Probleme de condition
    Bonjour,,


    J'ai un soucis de condition je dois réaliser une macro qui va lire toutes les cellules d'une colonne et selon le 1er mot se trouvant dans cellule et marquera un texte dans la cellule en face

    Exemple

    Vitesse mini bras avant :14 cellule B5
    ma macro lis le 1er mot qui est vitesse dans la cellule C5 j'ecris tr/min


    Température four:54 cellule B6
    ma macro lis le 1er mot qui est température dans la cellule c6 j'ecris °c


    je voudrais le faire pour le mot quantité,vitesse,température
    et si ma macro ne lis aucun de ces trois mots j'affiche / dans la cellule d'en face



    Début de mon code


    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
    Sub valeurs()
     
    Dim i As Integer
     
    For i = 2 To 58
          If Cells(i, 3) = "température" Then
          Cells(i, 4) = "°c"
     
    Or        If Cells(i, 3) = "vitesse" Then
               Cells(i, 4) = "tr/min"
     
    Or        If Cells(i, 3) = "quantité" Then
               Cells(i, 4) = "kg"
     
    Or        If Cells(i, 3) = "durée" Then
               Cells(i, 4) = "min"
     
    Or        If Cells(i, 3) = "vitesse" Then
               Cells(i, 4) = "tr/min"
     
    elseif cells(i, 4)="/"
     
    End If
    Next i
     
    End Sub
    je doute que ce code marche car mon ecriture doit etre fausse
    mais tous coups de main sur cette idée serait la bienvenue

    je vous en remercie d'avance

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Il faudrait plutot utiliser select case

    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 valeurs()
     
    Dim i As Integer
     
    For i = 2 To 58
     
    Select case Cells(i,3).value
        case "température"
              Cells(i, 4).value = "°c"
        case "vitesse" Then
              Cells(i, 4).value = "tr/min"
        case else
              Cells(i,4).value = "/"
    Select Case
     
    Next i
     
    End Sub
    Jérôme

  3. #3
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Merci pour ton aide
    J'ai retravailler ton code il y avait des erreurs mais rien de grave ca ma permit d'avancer dans ma macro et de comprendre la fonction select case

    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 valeurs()
     
    Dim i As Integer
     
    For i = 2 To 58
     
    Select Case Cells(i, 3).Value
        Case "température"
              Cells(i, 4).Value = "°c"
        Case "vitesse"
              Cells(i, 4).Value = "tr/min"
        Case "durée"
              Cells(i, 4).Value = "min"
        Case "quantité"
              Cells(i, 4).Value = "kg"
        Case Else
              Cells(i, 4).Value = "/"
     
    End Select
    Next i
     
     
    End Sub

    par contre le soucis que j'ai comment prendre le 1er mot de ma cellule

    car il m'arrive que dans ma cellule j'ai

    "température du four"
    et vu qu'il lit toutes la cellule sil y a un autre mot en plus que température il met pas de signe

    comment je pourrais modifier la condition pour ciblé que le 1er mot
    toutes idées est la bienvenue comme toujours

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    j'ai remarque qu'on recherchais une valeurs donc une chose bien precise
    existe t'il une fonction qui permet de cherche une chose dans une expression non precise

    en gros au lieu de cherche le mot température et seulement température
    je recherche le mot température dans une expression quelquonque

  5. #5
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    tu peux faire quelque chose comme ça :

    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
    Sub valeurs()
     
    Dim i As Integer
    Dim t as string
    Dim l as long 
     
    For i = 2 To 58
     
    l = InStr(1, Cells(i, 3).Value, " ")
    If l = 0 Then l = Len(Cells(i, 3).Value)
    t = Left$(Cells(i, 3).Value, l) 
     
    Select Case t
        Case "température"
              Cells(i, 4).Value = "°c"
        Case "vitesse"
              Cells(i, 4).Value = "tr/min"
        Case "durée"
              Cells(i, 4).Value = "min"
        Case "quantité"
              Cells(i, 4).Value = "kg"
        Case Else
              Cells(i, 4).Value = "/"
     
    End Select
    Next i
     
     
    End Sub
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  6. #6
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Keihilin j'ai appliquer ton code et ce ne prend toujours pas en compte le mot qui se trouve dans expression

    au pire vu que j'ai que 25 expressions differentes au pire je les notes tous et puis voila
    mais bon j'aurais bien voulus une solution plus simple et plus joli

  7. #7
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    J'ai un peu pondu ça rapidement, mais ce code est censé récupérer le 1er mot (en assumant qu'un espace sépare les mots) de la cellule.

    Si le mot que tu cherches n'est pas forcément le 1er, le problème est différent.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  8. #8
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    le mot que je cherche est bien le premier et il y a un bien un espace apres le premier mot

  9. #9
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    pose un point d'arrêt sur le select case et regarde la valeur de t à chaque boucle. Tu verras sans doute ce qui ne marche pas.
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    avec spit ca devrait faire l'affaire

    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
     
    Dim i As Integer
    Dim str() As String
     
    For i = 2 To 58
     
    str = Split(Cells(i, 3).Value, " ")
     
    Select Case str(0)
        Case "température"
              Cells(i, 4).Value = "°c"
        Case "vitesse"
              Cells(i, 4).Value = "tr/min"
        Case Else
              Cells(i, 4).Value = "/"
    End Select
     
    Next i
    Jérôme

  11. #11
    Inscrit

    Profil pro
    Inscrit en
    Février 2004
    Messages
    862
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2004
    Messages : 862
    Points : 1 229
    Points
    1 229
    Par défaut
    ...trop longtemps que je fais plus de VBA moi...J'étais vraiment pas sur que Split existait
    In my experience, any attempt to make any system idiot proof will only challenge God to make a better idiot.

  12. #12
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    Merci ça marche
    par contre un defaut qui n'est pas génant pour moi mais peut etre certain
    c'est si la case est vide la macro s'arrete
    et met comme defaut "l'indice n'appartient pas a la selection"
    sur la ligne "Select Case str(0)"


    Enfin moi ca me gene pas vu que je n'est pas de case vide

  13. #13
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Dans ce cas il suffit de tester le nombre d'indice de la variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if UBound(str)>=0 then
       select case
     
       end select
     
    end if
    Jérôme

  14. #14
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 208
    Points : 86
    Points
    86
    Par défaut
    parfait ca marche
    je te remercie

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

Discussions similaires

  1. [VBA-Excel]probleme d'ecriture dans un fichier ini
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 18h45
  2. [VBA-excel]Probleme de macro pour creer un graphique.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 15h42
  3. [VBA Excel]probleme de copier/coller
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 31/01/2006, 14h22
  4. [VBA excel] Probleme sur bouton commande
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 22/11/2005, 10h10
  5. [VBA] [Excel] Probleme de rafraichissement d'un label
    Par lejert dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 17h09

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