Erreur '438' - mauvaise formulation?

pnlop

XLDnaute Occasionnel
Bonjour le forum,

Je bloque toujours sur une partie de mon code... Je ne comprends pas l'erreur 438 qu'il m'indique...

Code:
Dim c As Range

For Each c In Sheets("bon commande").Range("articles")

If c.Value > 0 Then
    
    Worksheets("commande en cours").Range("A65536").End(xlUp).Offset(1, 0) = Worksheets("bon commande").Range("B5").Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = Worksheets("bon commande").Range("A8").Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 2) = Worksheets("bon commande").Range("B8").Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 3) = Worksheets("bon commande").Range("C5").Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 4) = Worksheets("bon commande").c.Value [I]'erreur 438'[/I]
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = Worksheets("bon commande").c.Value.Offset(0, -1).Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 6) = Worksheets("bon commande").c.Value.Offset(0, 2).Value
 
 End If
Next

Quelqu'un pourrait-il m'aider, car je n'avance pas du tout...
Merci!
Pnlop
 

vgendron

XLDnaute Barbatruc
Re : Erreur '438' - mauvaise formulation?

Bonjour,

essaie comme ceci..??

Code:
Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 4) = c.Value [I]'erreur 438'[/I]
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = c.Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 6) = c.Value

Sinon, avec ton fichier, ca pourrait nous éclaircir
 
G

Guest

Guest
Re : Erreur '438' - mauvaise formulation?

Bonjour,

Peut-être (mais va savoir????? suis pas devin):
Code:
    For Each c In Sheets("bon commande").Range("articles")
        If c.Value > 0 Then
            With Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp)
                .Offset(1, 0) = Worksheets("bon commande").Range("B5").Value
                .Offset(1, 1) = Worksheets("bon commande").Range("A8").Value
                .Offset(1, 2) = Worksheets("bon commande").Range("B8").Value
                .Offset(1, 3) = Worksheets("bon commande").Range("C5").Value
                .Offset(1, 4) = c.Value
                .Offset(1, 5) = c.Offset(0, -1).Value
                .Offset(1, 6) = c.Offset(0, 2).Value
            End With
        End If
    Next

A+
 

mécano41

XLDnaute Accro
Re : Erreur '438' - mauvaise formulation?

Bonjour,

Probablement ainsi pour les 3 dernières lignes...

Code:
Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 5) = Worksheets("bon commande").c.Offset(0, -1).Value

EDIT : grillé! nous sommes donc d'accord!

Cordialement
 
G

Guest

Guest
Re : Erreur '438' - mauvaise formulation?

Re,

@mécano
=Worksheets("bon commande").c.Offset(0, -1).Value
La variable objet c contient déjà son parent (worksheet) donc
= c.offset(0,-1).value
suffit et ne posera pas de problème

A+
 

pnlop

XLDnaute Occasionnel
Re : Erreur '438' - mauvaise formulation?

Merci pour vos propositions...
Que j'ai testée, mais le problème se décale...
J'ai mis mon fichier (vidé de ses données..) pour que ce soit plus clair..
Le code est dans l'userForm4...
Cela dit, je doit être myro, mais je vois pas de différence entre vos corrections et mon code?!?
 

Pièces jointes

  • exemple pnlop.xlsm
    182.3 KB · Affichages: 43
  • exemple pnlop.xlsm
    182.3 KB · Affichages: 58
  • exemple pnlop.xlsm
    182.3 KB · Affichages: 51
G

Guest

Guest
Re : Erreur '438' - mauvaise formulation?

Re,

Ceci fonctionne chez moi pour peu qu'il y ait les . devant les Cells. Lire un peu l'aide excel sur With
i = 2 au début sinon la ligne de titre aura un checkbox.

Autre méthode que les checkBox: mettre des coches (ü) police Wingdings

Code:
Sub ttt()
    With Worksheets("commande en cours")
        Dim t, l, i
        i = 1
        Do While .Cells(i, 1).Value <> ""

            t = .Cells(i, 8).Top
            l = .Cells(i, 8).Left
            .OLEObjects.Add ClassType:="Forms.CheckBox.1", Link:=False, _
                            DisplayAsIcon:=False, Left:=l + 15, Top:=t + 4, Width:=10, Height:=10
            i = i + 1
        Loop
    End With
End Sub

A+
 

Statistiques des forums

Discussions
312 185
Messages
2 086 016
Membres
103 093
dernier inscrit
Molinari