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 :

Boucle Si, Ou


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 114
    Par défaut Boucle Si, Ou
    Bonjour
    J'ai un problème.
    En colonne j'ai un élément texte ex:
    Cet élément est situé en colonne "T"

    200406 traitement
    200407 benefice
    201613 cotis
    201614 indemnité
    200112 patron
    458962 vaj
    125697 pse
    512667 ome
    541268 rt
    521264 ed
    200406 vt
    200407 ed
    201613 sf
    201614 gr
    200112 mp

    Il faudrait que si mon élément commence par:
    200406
    200407
    201581
    201613
    201614
    (Sans prendre ce qui a après car ce qui a après varie il faut juste que je prenne le début.)

    Alors je met dans la colonne "AB" le code "94840" et dans la colonne AC je met "ETAT".
    Mon fichier a plus de 40 000 lignes donc il faudrait qu'il ce répéte autant de fois que j'ai de ligne et fasse les remplacement si besoin, j'ai pensé aune boucle while.

    Je bloque sur cette macro si quelqu'un pourrait m'aider
    Merci

    J'ai déjà tenté des choses infructueuse ( très infructueuse même...)


    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 nb5
     
    nb5 = Application.WorksheetFunction.CountA(Range("A:A"))
     
    While nbr <= nb5
    With Worksheets(1).Range("T2" & ":T" & nb5)
    Set c = .Find(101000, LookIn:=xlValues)       < --- 'j'ai essayé qu avec un seul élément simplifier
    If Not c Is Nothing Then
    Columns("AB") = 94840
    Columns("AC") = "ETAT"
     
    Do
    Set c = .FindNext(c)
    Loop While Not c Is Nothing And c.Address <> firstAddress
    nbr = nbr + 1
    End If
    End With
    Wend

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    On va faire simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
    Dim i as long
    With Worksheets(1)
    For i = 2 to .range("T" & .rows.count).end(xlup).row
    If left(.range("T" & i),6) = "200406" or  left(.range("T" & i),6) = "200407" or left(.range("T" & i),6) = "201581" or left(.range("T" & i),6) = "201613" or left(.range("T" & i),6) = "201614") then
    .range("AB" & i) = 94840
    .range("AC" & i) = "ETAT"
    end if
    next i
    end with
    end sub
    Mais une formule excel serait tout aussi bien
    En AB2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =si(ou(gauche(T2,6) = "200406";gauche(T2,6) = "200407";....);94840;"")

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 114
    Par défaut
    J'avais aussi écris ça sur papier

    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 nb5=Application.WorksheetFunction.CountA(Range("A:A"))  'nombre de ligne de mon tableau
    nbr=2    'Ligne de commencement des valeurs
     
    While nbr<=nb5
        If   Find."200406" or    'je ne connais pas la fonction trouve en vba
    Find."200407" or
    Find."201581" or
    Find."201613" or
    Find."201614" or
    Find."200112" THEN
    ("AB" & nb)=94840  And
    ("AC" & nb)="ETAT" else
     
    EndIF
    nbr=nbr+1
    Wend

    Merci engue engue j'avais pas vu ta réponse

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 114
    Par défaut
    Il y a une erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If left(.range("T" & i),6) = "200406" or  left(.range("T" & i),6) = "200407" or left(.range("T" & i),6) = "201581" or left(.range("T" & i),6) = "201613" or left(.range("T" & i),6) = "201614") or left(.range("T" & i),6) = "200112") then

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Une parenthèse en trop juste avant le then

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 114
    Par défaut
    Merci engue t un chef ça fait 3h que je suis dessus..

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. [langage] if et boucle { ..}
    Par kacedda dans le forum Langage
    Réponses: 15
    Dernier message: 28/04/2003, 17h25
  3. [directsound] boucle de traitement de son
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 24/03/2003, 10h47
  4. Sortir d'un progamme qui boucle ou qui refresh
    Par mikevador02 dans le forum C
    Réponses: 12
    Dernier message: 14/12/2002, 09h38
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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