VBA

Bonjour n’étant pas très fort en vba je vous demande de l'aide ^^

j'aimerais renvoyer des lignes sur une autre page si celle ci est remplie

je vous joint le fichier

en fait j'aimerais que des qu'il y'a une commande on renvoie ( magasins, date de livraison, semaine, date prévision, semaine, quantité, gamme, couleur, ref) qui sont sur la page 2 sur la page 1 en N3 :/

merci d'avance !

16probleme-excel.xlsx (13.21 Ko)

Bonjour,

D'abord, modifie le calcul du numéro de semaine en utilisant une formule qui garantit l'exactitude du calcul selon les stipulations de la norme ISO 8601. Par exemple :

=ENT((B3-RECHERCHE(B3;DATE(ANNEE(B3)+{-1;0;1};1;3)-JOURSEM(DATE(ANNEE(B3)+{-1;0;1};1;3))+2))/7)+1

Ensuite ta demande est imprécise, tu ne sembles pas y avoir beaucoup réfléchi :

Tu veux transférer les valeurs de 9 cellules par ligne : à quel moment ?

Il apparaît dans ton modèle que la saisie est incomplète sur toutes les lignes.

Si automatique lors de la saisie de la commande, cela implique une procédure évènementielle qui vérifiera que la saisie est complète pour les valeurs à reporter...

Si lancement après une session de saisie pour mise à jour des lignes reportées, on efface les reports antérieurs, et on balaie la feuille pour reporter globalement toutes les lignes...

Voilà 2 principales variantes, et il y en a d'autres.

Cordialement.

merci pour le calcul de no.semaine

Et bien en fait dès qu'il y'a une ligne remplie je voulais que (magasins, date de livraison, semaine, date prévision, semaine, quantité, gamme, couleur, ref) soit renvoyés à la feuille 1 en fait dès lors qu'il y'a une saisie de commande comme tu me l'as expliqué

Re,

A essayer :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cmd(), las, i%, n%
    If Target.Count > 1 Then Exit Sub
    n = Target.Row
    If n > 2 Then
        Select Case Target.Column
            Case 1, 2, 4, 6, 10, 11, 12
            Case Else
                Exit Sub
        End Select
    Else
        Exit Sub
    End If
    las = Array(1, 2, 4, 6, 10, 11, 12)
    n = Target.Row
    For i = 0 To 6
        If Me.Cells(n, las(i)) = "" Then Exit Sub
    Next i
    ReDim cmd(1 To 9)
    las = Array(1, 2, 3, 4, 5, 6, 10, 11, 12)
    For i = 0 To 8
        cmd(i + 1) = Me.Cells(n, las(i)).Value
    Next i
    n = Worksheets("Feuil1").Range("N" & Rows.Count).End(xlUp).Row + 1
    Worksheets("Feuil1").Range("N" & n).Resize(, 9).Value = cmd
End Sub

Cordialement.

ah oui c'est parfait !

je vous remercie

cordialement,

Rechercher des sujets similaires à "vba"