Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 16h20   #1
Nouveau Membre du Club
 
Inscription : avril 2010
Messages : 150
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 150
Points : 25
Points : 25
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 :
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
korni184 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h17   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

En ajoutant une boucle :

Code :
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
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 17h26   #3
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
En reprenant le code de ton autre sujet :

Code :
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.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h00.


 
 
 
 
Partenaires

Hébergement Web