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 :

Moteur Do While


Sujet :

Macros et VBA Excel

Vue hybride

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Moteur Do While
    Hello,

    Je voudrais transformer ce code en ajoutant un moteur (Do While) afin de pouvoir ajouter à côter de chaque cellule le montant formaté et la devise.

    Vu que le nombre de ligne est variable, je voudrais tout simplement que le traitement s'arrête lorsqu'il y a plus de données.

    C'est à dire :

    A1 : 4500,USD
    A2 : 25000,USD
    A3 : plus de données

    Donc logiquement en B1,C1 ET B2 ET C2 il doit me faire mon formatage. Et en A3, il arrête.

    Pouvez-vous m'aider ?

    Merci d'avance

    Colonne A les montants+devises
    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
     1234567891011121314151617 Sub Macro1() 
    ' 
    Sub Macro1() 
    ' 
    ' Macro1 Macro 
    ' Macro recorded 16/11/2011  
    ' 
    ' Keyboard Shortcut: Ctrl+a 
    ' 
     Dim Montant As String 
     Dim Devise As String 
    'Suppression des espaces blancs 
     Columns("A:A").Select 
     Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
    'Définition du montant 
     Montant = Replace(Mid(Range("A1"), 4, Len(Range("A1").Value) - 4), ",", ".") 
     
    'Définition de la devise 
     Devise = Replace(Mid(Range("A1"), 1, Len(Range("A1").Value) - 6), ",", ".") 
     
    'Ajout du montant dans la colonne B 
     Range("B1").Value = Val(Montant) 
     
    'Ajout de la devise dans la colonne C 
     Range("C1").Value = Devise 
    'Ajout des décimales colonne B 
     Range("B:B").Select 
     Selection.NumberFormat = "0.00" 
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    En ajoutant une boucle :

    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 Macro1()
    '
    ' Macro1 Macro
    ' Macro recorded 16/11/2011
    '
    ' Keyboard Shortcut: Ctrl+a
    '
     Dim Montant As String
     Dim Devise As String
    'Suppression des espaces blancs
     Columns("A:A").Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchFormat:=False, ReplaceFormat:=False
    'Définition du montant
     For Each c In Range([A1], Cells(Rows.Count, 1).End(xlUp))
         Montant = Replace(Mid(c.Value, 4, Len(c.Value) - 4), ",", ".")
     
        'Définition de la devise
         Devise = Replace(Mid(c.Value, 1, Len(c.Value) - 6), ",", ".")
     
        'Ajout du montant dans la colonne B
         c.Offset(, 1).Value = Val(Montant)
     
        'Ajout de la devise dans la colonne C
         c.Offset(, 1).Value = Devise
     Next c
    'Ajout des décimales colonne B
     Range("B:B").NumberFormat = "0.00"
     
    End Sub

  3. #3
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    En reprenant le code de ton autre sujet :

    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
    Sub Macro1()
        Dim iRow As Integer
        Dim montant As Double
        Dim devise As String
        Dim texte As String
     
        iRow = 1
     
        While Cells(iRow, 1) <> ""
            texte = Cells(iRow, 1).Value
            montant = Replace(Right(texte, Len(texte) - 4), ",", ".")
            devise = Left(texte, 3)
     
            Cells(iRow, 2).Value = montant
            Cells(iRow, 2).NumberFormat = "0.00"
            Cells(iRow, 3).Value = devise
     
            iRow = iRow + 1
        Wend
    End Sub
    Tu verras par contre que j'ai pas mal simplifier les choses pour que ça fasse moins du code tout droit sorti de l'enregistreur de macro.
    Et pour les futurs lecteurs, le replace ne sert que si le format numérique n'est pas le même dans l'extraction et dans excel, on pourra également avoir besoin de faire l'inverse si les données sont avec un . et Excel en notation française.

Discussions similaires

  1. Réponses: 27
    Dernier message: 25/08/2004, 22h30
  2. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  3. moteur de particules :Dessiner un point
    Par houssa dans le forum OpenGL
    Réponses: 2
    Dernier message: 25/06/2003, 22h13
  4. Réponses: 3
    Dernier message: 25/11/2002, 14h15
  5. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

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