Problème dans ma macro

gimli

XLDnaute Occasionnel
Bonjour,

comme le dit le titre, j'ai un soucis dans mon code, plus précisément ici :

For xy = 2 To dernligne19540
If ResWkb.Sheets("19540").Range("J" & xy).Value = 0 And ResWkb.Sheets("19540").Range("K" & xy).Value = 0 And ResWkb.Sheets("19540").Range("L" & xy).Value = 0 Then

Else
Columns("AB:AB").Insert Shift:=xlToRight
ResWkb.Sheets("19540").Cells(2, 28).FormulaR1C1 = _
"=SMALL(RC[-18]:RC[-17]:RC[-16],COUNTIF(RC[-18]:RC[-17]:RC[-16],0)+1)"
ResWkb.Sheets("19540").Range("AB2").AutoFill Destination:=ResWkb.Sheets("19540").Range("AB2:AB276"), Type:=xlFillDefault


End If
Next xy

Avec ce code je souhaite utiliser la formule qui est en rouge uniquement dans le cas ou la ligne traitée ne répond pas au critère du if en vert...
J'ai essayé de remplacer les "2" des "AB2" par "xy" (la variable du for) mais ça me fait une erreur...je suis dessus depuis hier soir :(

merci d'avance

Gimli
 

Cousinhub

XLDnaute Barbatruc
Re : Problème dans ma macro

Bonsoir,

sans vraiment pouvoir tester....

Code:
For xy = 2 To dernligne19540
If ResWkb.Sheets("19540").Range("J" & xy).Value = 0 And ResWkb.Sheets("19540").Range("K" & xy).Value = 0 And ResWkb.Sheets("19540").Range("L" & xy).Value = 0 Then

Else
Columns("AB:AB").Insert Shift:=xlToRight
ResWkb.Sheets("19540").Cells(2, 28).FormulaR1C1 = _
"=SMALL(RC[-18]:RC[-17]:RC[-16],COUNTIF(RC[-18]:RC[-17]:RC[-16],0)+1)"
ResWkb.Sheets("19540").Range("AB" & xy & "").AutoFill Destination:=ResWkb.Sheets("19540").Range("AB" & xy & ":AB276"), Type:=xlFillDefault

End If
Next xy

Peut-être...
 

gimli

XLDnaute Occasionnel
Re : Problème dans ma macro

Bonjour bhbh et merci pour ta réponse,

ta macro fonctionne dans le sens ou il n'y a pas d'erreur qui s'affiche. Cependant, mon problème est toujours là, car la formule est encore appliquée dans le cas ou la condition du IF est vérifiée. Du coup j'obtiens des #NOMBRE dans les cases AB des lignes ou le IF est vérifié.
Je sais que c'est dur de comprendre sans le fichier sous les yeux, j'ai essayé de faire un classeur d'exemple avec cette macro mais ça ne marche pas. Je poste donc un classeur avec les colonnes J, K et L remplies mais sans la macro.
La formule : elle sert à comparer les colonnes J, K et L et d'en sortir le minimum des trois (dans la colonne AB), mais si le résultat est 0 la macro prendra la valeur (des trois colonnes) la plus petite au dessus de zéros.
Voila pourquoi il ne faut pas que cette macro s'applique si les trois colonnes sont égales à 0.

merci :)

Gimli
 

Pièces jointes

  • Classeur12.xls
    30 KB · Affichages: 64
  • Classeur12.xls
    30 KB · Affichages: 63
  • Classeur12.xls
    30 KB · Affichages: 64

Cousinhub

XLDnaute Barbatruc
Re : Problème dans ma macro

re-,

ben, je comprends pas tout....

pourquoi un AutoFill, si tu balayes toutes les cellules de J2 à Jxx?
pourquoi une insertion de colonne AB à chaque fois?
sinon, si la condition est respectée, chez moi la cellule reste vide en colonne AB...

Bref, bien nébuleux, ton bourzouf.....

Code:
Sub ee()
With Sheets("19540")
    dernligne19540 = .[J65000].End(xlUp).Row
    For xy = 2 To dernligne19540
        If Sheets("19540").Range("J" & xy).Value = 0 And Sheets("19540").Range("K" & xy).Value = 0 And Sheets("19540").Range("L" & xy).Value = 0 Then

        Else
 '           .Columns("AB:AB").Insert Shift:=xlToRight
            .Cells(xy, 28).FormulaR1C1 = _
                "=SMALL(RC[-18]:RC[-17]:RC[-16],COUNTIF(RC[-18]:RC[-17]:RC[-16],0)+1)"
'            .Range("AB" & xy & "").AutoFill Destination:=Sheets("19540").Range("AB" & xy & ":AB276"), Type:=xlFillDefault

        End If
    Next xy
End With
End Sub

chez moi, cela fonctionne....
 

pierrejean

XLDnaute Barbatruc
Re : Problème dans ma macro

Bonjour gimli
Salut bhbh

Vois si tu peux t'inspirer de ceci

Arf: Serieusement a la bourre moi !!!
 

Pièces jointes

  • Classeur12.zip
    16 KB · Affichages: 40
  • Classeur12.zip
    16 KB · Affichages: 41
  • Classeur12.zip
    16 KB · Affichages: 34

gimli

XLDnaute Occasionnel
Re : Problème dans ma macro

Bonjour pierrejean (désolé du retard),
merci pour ta macro , mais il y a des lignes ou elle ne fonctionne pas, regarde les lignes 91 (K et L devraient valoir 1553),171 (K et L devraient valoir 2876) ...
je ne sais pas d'ou ça vient :eek:

merci encore

Gimli
 

pierrejean

XLDnaute Barbatruc
Re : Problème dans ma macro

Re

Cela vient du fait qu'en K91 tu as 1 553 (espace entre 1 et 5) dans une cellule au format standard et interpretée comme du texte

Teste

Code:
Sub test()
For n = 2 To Range("J65536").End(xlUp).Row
Range("J" & n) = CLng(Range("J" & n))
Range("K" & n) = CLng(Range("K" & n))
Range("L" & n) = CLng(Range("L" & n))
If Not (Range("J" & n) = 0 And Range("K" & n) = 0 And Range("L" & n) = 0) Then
  Range("N" & n).FormulaR1C1 = "=SMALL(RC[-4]:RC[-3]:RC[-2],COUNTIF(RC[-4]:RC[-3]:RC[-2],0)+1)"
End If
Next n
End Sub
 

gimli

XLDnaute Occasionnel
Re : Problème dans ma macro

re,

j'ai mis ton code ainsi (il y a que le WITH et END WITH en plus) :

With Sheets("19540")

For ni = 2 To Range("J65536").End(xlUp).Row
Range("J" & ni) = CLng(Range("J" & ni))
Range("K" & ni) = CLng(Range("K" & ni))
Range("L" & ni) = CLng(Range("L" & ni))
If Not (Range("J" & ni) = 0 And Range("K" & ni) = 0 And Range("L" & ni) = 0) Then
Range("N" & ni).FormulaR1C1 = "=SMALL(RC[-4]:RC[-3]:RC[-2],COUNTIF(RC[-4]:RC[-3]:RC[-2],0)+1)"
End If
Next ni
End With

et quand je lance la macro, à la fin les colonnes K et L sont vidées :confused:
 

pierrejean

XLDnaute Barbatruc
Re : Problème dans ma macro

Re

Avec With et end With le . (point) est de rigueur

Teste

Code:
Sub testgimli()
With Sheets("19540")
For ni = 2 To .Range("J65536").End(xlUp).Row
.Range("J" & ni) = CLng(.Range("J" & ni))
.Range("K" & ni) = CLng(.Range("K" & ni))
.Range("L" & ni) = CLng(.Range("L" & ni))
If Not (.Range("J" & ni) = 0 And .Range("K" & ni) = 0 And .Range("L" & ni) = 0) Then
.Range("N" & ni).FormulaR1C1 = "=SMALL(RC[-4]:RC[-3]:RC[-2],COUNTIF(RC[-4]:RC[-3]:RC[-2],0)+1)"
End If
Next ni
End With
End Sub
 

Discussions similaires

Réponses
1
Affichages
199

Statistiques des forums

Discussions
312 534
Messages
2 089 386
Membres
104 152
dernier inscrit
sabalex