Problème de répétition de macro sous VBA

Sarah Coff

XLDnaute Nouveau
Bonjour à tous,

Je suis débutante sur VBA et je voudrais vous demander de l'aide.

Pour mon stage je dois utiliser VBA.
J'ai donc réussi a faire certaines de mes macros en parcourant votre forums, mais pour cette dernière je bloque.

Voici ma macro :

Dim rcell As Range
Dim rCellule As Range


For Each rCellule In Range("E3")
If rCellule <> "EUR" Then
Set rcell = range("N3")
rcell.Value = Round([ M3 / L3 ], 2)
Range("M3") = rcell
rcell.Clear


If rCellule = "" Then Exit Sub


En fait mon problème est que j'aimerai que cette dernière soit affectée à toutes les lignes, mais j'aimerai que le chiffre de la ligne change a chaque fois.

Exemple: pour rCellule in Range("E4"), le range de rcell sera en N4, et la formule sera M4 / L4 et le Range("M4") sera egale à rcell. Et ainsi de suite...

Merci d'avance
 

Odesta

XLDnaute Impliqué
Re : Problème de répétition de macro sous VBA

Bonjour

Deux petites astuces :

ma_ligne = rCellule.Row 'renvéra le numéros de la ligne (.column pour la colonne)
et Set rcell = range("N" & ma_ligne) attribuera à rcell la cellule N4 (si rCellule est en ligne 4)

A partir de la, vous allez pouvoir résoudre votre soucis

Plus qu'a modifier la plage de :
For Each rCellule In Range("E3:E200")

Cdt
Olivier
 

Odesta

XLDnaute Impliqué
Re : Problème de répétition de macro sous VBA

pour résoudre rcell.Value = Round([ M3 / L3 ], 2)

Je proposerai d'utiliser l'instruction CELLS (similaire à Range)
rcell.Value = Round( Cells(ma_ligne, "M").value / Cells(ma_ligne, "L").value, 2)
Qui peut s'écrire aussi :
rcell.Value = Round( Cells(ma_ligne, 13).value / Cells(ma_ligne, 12).value, 2)

O
 

Sarah Coff

XLDnaute Nouveau
Re : Problème de répétition de macro sous VBA

Merci Olivier pour ta réponse,

Cependant ma formule ne change pas, et quand j'essaie d'appliquer ma_ligne à cette dernière j'ai une erreur d'éxecution 13 :

For Each rCellule In Range("E3,E65536")
ma_ligne = rCellule.Row
If rCellule <> "EUR" Then
Set rcell = Range("N" & ma_ligne)
rcell.Value = Round([ M / L ], 2) & "" & ma_ligne
Range("M" & ma_ligne) = rcell
rcell.Clear


If rCellule = "" Then Exit Sub

Sarah
 

tbft

XLDnaute Accro
Re : Problème de répétition de macro sous VBA

Bonjour tout le monde

Je vois un for mais pas de next???? des if then sans endif???
Serait -il possible d'avoir le corps de la macro en entier ou un bout de fichier, stp?

D'avance merci
 

Sarah Coff

XLDnaute Nouveau
Re : Problème de répétition de macro sous VBA

Désolé TDFT voici la macro entière :

Sub Convertir()

Dim rcell As Range
Dim rCellule As Range


For Each rCellule In Range("E3,E65536")
If rCellule <> "EUR" Then
ma_ligne = rCellule.Row
Set rcell = Range("N" & ma_ligne)
rcell.Value = Round([ M3 / L3 ], 2)
Range("M" & ma_ligne) = rcell
rcell.Clear


If rCellule = "" Then Exit Sub

End If
Next
End Sub

Par contre j'ai essayé de mettre [/code] dans ma macro mais ça ne change rien dans le rendu visuel
 

tbft

XLDnaute Accro
Re : Problème de répétition de macro sous VBA

Re

Si tu veux écrire une formule passe plutôt par :
Cells(ligne,colonne).Formula="La formule en anglais"
Cells(ligne,colonne).FormulaLocal="La formule en xxxx" xxxx : langue par défaut d'excel...
 

tbft

XLDnaute Accro
Re : Problème de répétition de macro sous VBA

Cela donne ça

VB:
Sub Convertir()
Dim rcell As Range
Dim rCellule As Range
  For Each rCellule In Range("E3,E65536")
    If rCellule <> "EUR" Then
      ma_ligne = rCellule.Row
      Set rcell = Range("N" & ma_ligne)
      rcell.Value = Round([ M3 / L3 ], 2)
      Range("M" & ma_ligne) = rcell
      rcell.Clear
      If rCellule = "" Then Exit Sub
    End If
  Next
End Sub

a quoi correspond M3 et L3,stp?
 

Odesta

XLDnaute Impliqué
Re : Problème de répétition de macro sous VBA

Bonjour TBFT
VB:
Sub Convertir()

Dim rcell As Range
Dim rCellule As Range


For Each rCellule In Range("E3:E65536")
If rCellule <> "EUR" Then
   if Cells(ma_ligne, 12).value <> 0 then
         ma_ligne = rCellule.Row
         Set rcell = Range("N" & ma_ligne)
         rcell.Value = Round( Cells(ma_ligne, 13).value / Cells(ma_ligne, 12).value, 2)
         Range("M" & ma_ligne) = rcell
         rcell.Clear
    End if


If rCellule = "" Then Exit Sub

End If
Next
End Sub

Comme ceci ?
 

Sarah Coff

XLDnaute Nouveau
Re : Problème de répétition de macro sous VBA

Avec la macro d'odesta j'ai de nouveau une erreur 1004 sur la ligne :

if Cells(ma_ligne, 12).value <> 0 then

j'aimerai pouvoir joindre le fichier , cependant j'ai une clause de confidentialité à respecter qui m'empêche de le faire.
 

ROGER2327

XLDnaute Barbatruc
Re : Problème de répétition de macro sous VBA

Bonjour à tous
Puisqu'on joue aux devinettes à des fins professionnelles (ce mot-là va bientôt devenir une insulte quand on voit ce qu'on voit...) :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i&
  i = 0
  Do While [E3].Offset(i, 0) <> ""
    If [E3].Offset(i, 0).Value <> "EUR" And [L3].Offset(i, 0).Value <> 0 Then
      [M3:N3].Offset(i, 0).Value = Round([M3].Offset(i, 0).Value / [L3].Offset(i, 0).Value, 2)
    End If
    i = i + 1
  Loop
End Sub[/B][/COLOR]
ROGER2327
#4385


Dimanche 22 Haha 138 (Résurrection de Bosse-de-Nage, SS)
6 Brumaire An CCXIX
2010-W43-3T09:02:27Z
 

Discussions similaires

Statistiques des forums

Discussions
312 680
Messages
2 090 865
Membres
104 681
dernier inscrit
Gtcheumawe