copie avec condition

alain31

XLDnaute Nouveau
bonjour
je voudrais faire une copie de lignes d'un onglet vers un autre avec condition:

sur l'onglet "inventaire" colonne "D" on rentre les quantités contrôlées.
les quantités de sur stock ou de quantités à commander sont calculées sur l'onglet "calculs";
je voudrais une macro qui me copie sur l'onglet "gestion" les lignes ( de A à F) ou même la ligne entière , sous conditions qu'on ai une quantité dans la colonne "E" (qt à commander); en collant à partir de la dernière ligne vide car les lignes sur l'onglet "gestion" doivent perdurer.
j'ai essayer mais avec "If Not IsEmpty" et collage sans liaisons car le tableau de l'onglet "inventaire " est remis à zéro à chaque inventaire, mais ça ne marche pas car la macro ne considère pas la cellule vide si elle contient une formule

Je joins un fichier pour plus de clarté.


merci pour votre aide

Alain
 

Pièces jointes

  • essai.xlsm
    37.2 KB · Affichages: 45

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie avec condition

Bonjour Alain, bonjour le forum,

Essaie comme ça :
Code:
Sub Macro1()
Dim C As Worksheet 'déclare la variable C (onglet Calculs)
Dim G As Worksheet 'déclare la variable G (onglet Gestion)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set C = Worksheets("Calculs") 'définit l'onglet C
Set G = Worksheets("Gestion") 'définit l'onglet G
TV = C.Range("a1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 3 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la troisième)
    If TV(I, 5) <> "" Then 'condition : si la donnée ligne I colonne 5 (=> colonne E) contient une valeur
        ReDim Preserve TL(1 To 6, 1 To K) 'redimensionne le tableau des lignes (6 lignes, K colonnes)
        For J = 1 To 6 'boucle 2 : sur les 6 colonnes du tableau des valeurs TV
            TL(J, K) = TV(I, J) 'récupère en ligne J de TL la valeur en colonne J de TV (= transposition)
        Next J 'prochaine colonne de la boucle 2
        K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle 1
If K > 1 Then 'condition : si K est supérieure à 1 (au moins une occurrence trouvée)
    Set DEST = G.Range("C" & Application.Rows.Count).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
    DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL) 'renvoie dans DEST redimensionnée le tableau TL transposé
End If 'fin de la condition
End Sub
 

Lolote83

XLDnaute Barbatruc
Re : copie avec condition

Salut Alain31,
En passant par un filtre élaboré, l'affaire devrait être réglée.
Voir ici

Salut ROBERT, pas rafraichi assez tôt ou encore une fois pris de cours. Tu es trop rapide.

@+ Lolote83
 

Pièces jointes

  • Copie de ALAIN31 - Copie avec condition.xlsm
    39.7 KB · Affichages: 63

alain31

XLDnaute Nouveau
Re : copie avec condition

Bonjour

Merci à Robert et Lolote83,
Vos deux solutions marchent très bien !!
Deux façons différentes d'arriver au résultat recherché !!

Robert comment faire pour que les formats soient ceux de la page cible et non ceux de la source ??

Connaissez vous un site en lige pour apprendre le vba au moins dans les bases et un peu plus poussé ??

Encore merci pour votre aide .

Alain
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : copie avec condition

Boujour le fil, bonjour le forum

C'est l'inconvénient de cette méthode, elle est très rapide mais les formats sources foutent le camp... Mais je ne comprends pas, si tu veux les formats cibles alors ça devrait convenir...

Sinon je vais te donner LE site qui m'a permis de progresser en VBA. J'ai pratiquement tout appris grâce à lui. Mais où il est est... Je ne le retrouve plus. Ha ! J'suis c** c'est ici même, XLD !...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom