pas d'erreur, mais pas d'exécution! (copie de certaine cellules..)

pnlop

XLDnaute Occasionnel
Bonjour le forum,
Je bloque devant mon code, qui ne semble à priori pas contenir d'erreur, mais qui ne fonctionne pas...

J'ai des données dans ma feuille "bon commande" que je souhaite coller dans ma feuille "commande en cours"...
Donc j'ai nommé ma plage de cellule B11:B33 de ma feuille "bon commande" article.
Pour chaque cellule pleine de ma plage article, certaines données viennent se coller dans ma feuille "commande en cours"; certaines données restent fixes (date, fournisseur, n° commande...) et d'autres sont variables (dépendent de la cellule de la plage article)...

Voici mon code: (Il est vrai que je l'ai monté en m'inspirant de ce qui avait déjà été fait sur ce forum...:rolleyes:)


Code:
Dim c As Range

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

If 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
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 4) = Worksheets("bon commande").c.Offset(0, -1).Value
    Worksheets("commande en cours").Range("A" & Rows.Count).End(xlUp).Offset(0, 4) = Worksheets("bon commande").c.Offset(0, 2).Value
 
 End If
Next


Comme je n'ai pas de message d'erreur, je ne sais pas où elle est!
Merci de m'éclairer!!!
Salutations
Pnlop
 

Tirou

XLDnaute Occasionnel
Re : pas d'erreur, mais pas d'exécution! (copie de certaine cellules..)

Pour voir où ça coince, tu peux mettre des arrêts dans ton code (click dans la marge pour faire apparaitre un panneau stop), ou encore faire fonctionner ton code ligne par ligne avec F8.

Le tout avec les espions et la fenêtre de débug, ça t'évitera les impasses du type : "je ne rentre pas dans mon if".

A te relire

Edit :
Salut Robert !
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : pas d'erreur, mais pas d'exécution! (copie de certaine cellules..)

Bonjour Pnlop, bonjour le forum,

Ton code simplifié mais il y a des incohérences...

Code:
Sub Macro1()
Dim c As Range
Dim dest As Range

For Each c In Sheets("bon commande").Range("article")
    If c.Value > 0 Then
        Set dest = Worksheets("commande en cours").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)
        dest.Value = Worksheets("bon commande").Range("B5").Value
        dest.Offset(0, 1).Value = Worksheets("bon commande").Range("A8").Value
        dest.Offset(0, 2).Value = Worksheets("bon commande").Range("B8").Value
        dest.Offset(0, 3).Value = Worksheets("bon commande").Range("C5").Value
        dest.Offset(0, 4) = c.Value 'incohérent
        dest.Offset(0, 4).Value = c.Offset(0, -1).Value 'incohérent
        dest.Offset(0, 4).Value = c.Offset(0, 2).Value 'seule cette valeur sera prise en compte
    End If
Next
End Sub

[Édition]
Bonjour Tirou on s'est croisé...
 

pnlop

XLDnaute Occasionnel
Re : pas d'erreur, mais pas d'exécution! (copie de certaine cellules..)

Bonjour Robert, le Forum,
Merci pour le code simplifier.

Les incohérences...
dest.Offset(0, 4) = c.Value 'incohérent
dest.Offset(0, 4).Value = c.Offset(0, -1).Value 'incohérent
dest.Offset(0, 4).Value = c.Offset(0, 2).Value 'seule cette valeur sera prise en compte

Je voulais que ce soit la valeur de c qui vienne se mettre dans la cellule
Code:
dest.Offset(0, 4)
Puis la valeur de la cellule à côté (gauche) de la cellule c vienne se mettre dans la cellule
Code:
dest.Offset(0, 5)
Et enfin, la valeur de la cellule 2 colonnes après la cellule c vienne se mettre dans la cellule
Code:
dest.Offset(0, 6)

Je pense que la destination est bonne, mais la recherche de la valeur (c.Value ) n'est pas top...
 

Discussions similaires

Statistiques des forums

Discussions
312 079
Messages
2 085 129
Membres
102 788
dernier inscrit
Remy003