Code VBA copie de lignes dans un autre onglet en fin de tableau

Résolu/Fermé
Ambrita83 Messages postés 6 Date d'inscription lundi 20 mars 2017 Statut Membre Dernière intervention 7 juin 2017 - 22 mars 2017 à 10:26
Ambrita83 Messages postés 6 Date d'inscription lundi 20 mars 2017 Statut Membre Dernière intervention 7 juin 2017 - 24 mars 2017 à 18:50
Bonjour à tous,

Malgré mes différentes tentatives je ne parviens pas à ajouter automatiquement en sortie de stock les articles contenus dans un BL après validation de ce dernier.

J'ai deux onglets: "BL" et "Entrées et Sorties".

Les cellules A18 à A38 de l'onglet "BL" doivent apparaître à partir de la première cellule vide de la colonne C de l'onglet "Entrées et Sorties" -> nom des articles.

Les cellules E18 à E38 du "BL" doivent alors être copiées en conséquence dans la colonne F de l'onglet "Entrées et Sorties" -> quantité.

Voici ma dernière tentative:

Sheets("Entrées et Sorties").Select

Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=IF(BL!R[11]C[-2]="""","""",BL!R[11]C[-2])"
ActiveCell.Select
Selection.Copy

ActiveCell.Offset(0, 2).Select
ActiveCell.FormulaR1C1 = "=IF(RC[-3]="""","""",BL!R[11]C[-1])"
ActiveCell.Application.CutCopyMode = False

Selection.EntireRow.Select
Selection.Copy
Range(ActiveRow, ActiveRow.End(xlUp)).Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Columns("C:F").Select
Selection.Copy
Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Merci par avance pour votre aide!
A voir également:

1 réponse

via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
22 mars 2017 à 13:43
Bonjour Ambrita,

Essaie plutôt quelquechose ceomme ceci :
Dim Ligne As Long 
Ligne = Range("C" & Rows.Count).End(xlUp).Row 
For x=18 to 38
IF Sheets("Entrées et Sorties").Range("A" & x)<>"" then
Ligne=Ligne+1
Sheets("BL").range("C" & Ligne)=Sheets("Entrées et Sorties").Range("A" & x)
Sheets("BL").range("F" & Ligne)=Sheets("Entrées et Sorties").Range("E" & x)
End if
Next x


Cdlmnt
Via
0
Ambrita83 Messages postés 6 Date d'inscription lundi 20 mars 2017 Statut Membre Dernière intervention 7 juin 2017
23 mars 2017 à 10:16
Bonjour Via,

Merci pour ce retour.

J'ai créé une macro Stocks_V3 avec ta version mais sans résultat.
J'ai tenté en inversant les colonnes dans le code (Stocks_V4) mais ça ne fonctionne pas non plus.

Je ne maîtrise pas encore bien le VBA. Je te joins le fichier, en espérant que tu pourras trouver une solution à mon pb.

https://www.cjoint.com/c/GCxjh2sDIxu

Pour info, le code sur lequel je travaille est destiné à être intégré à la macro valiation_BL.

Merci encore,

Cdlt,
Ambrita
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > Ambrita83 Messages postés 6 Date d'inscription lundi 20 mars 2017 Statut Membre Dernière intervention 7 juin 2017
23 mars 2017 à 21:21
Bonsoir Ambrita

Désolé j'ai inversé les feuilles BL et Entrées Sorties dans la macro !!

La bonne macro est :
Sub Stocks_v3()

Dim Ligne As Long
Ligne = Sheets("Entrées et Sorties").Range("C" & Rows.Count).End(xlUp).Row
MsgBox Ligne
For x = 18 To 38
If Sheets("BL").Range("A" & x) <> "" Then
Ligne = Ligne + 1
Sheets("Entrées et Sorties").Range("C" & Ligne) = Sheets("BL").Range("A" & x)
Sheets("Entrées et Sorties").Range("F" & Ligne) = Sheets("BL").Range("E" & x)
End If
Next x

End Sub


Cdlmnt
Via
0
Ambrita83 Messages postés 6 Date d'inscription lundi 20 mars 2017 Statut Membre Dernière intervention 7 juin 2017 > via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024
24 mars 2017 à 18:50
C'est super, ça marche!
Il ne me reste plus qu'à comprendre comment fonctionne le code dans le détail pour la prochaine fois ;)

Merci encore Via!!!
0