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

[Résolu/Fermé]
Signaler
Messages postés
6
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
7 juin 2017
-
Messages postés
6
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
7 juin 2017
-
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!

1 réponse

Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021
2 245
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
Messages postés
6
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
7 juin 2017

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
Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021
2 245 >
Messages postés
6
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
7 juin 2017

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
Messages postés
6
Date d'inscription
lundi 20 mars 2017
Statut
Membre
Dernière intervention
7 juin 2017
>
Messages postés
13097
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
16 septembre 2021

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!!!