Signaler

Déplacer des ligne [Résolu]

Posez votre question Haitam_mhamdi - Dernière réponse le 14 juil. 2017 à 17:53 par Haitam_mhamdi
Bonjour,
Svp je veux déplacer des ligne vers une autre feuille et j'ai le code mais il copie la ligne et moi je veux la déplacé et non pas le copié voilà mon code


Private Sub CommandButton3_Click()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Long 'déclare la variable NL (Nombre de lignes)
Dim NC As Byte 'déclare la variable NC (Nombre de colonnes)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Long 'déclare la variable K (incrément)
Dim L As Byte 'déclare la variable L (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 OS = Worksheets("Entrée de charge") 'définit l'onglet source OS
Set OD = Worksheets("Livraison") 'définit l'onglet destination OD
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 10) = "Terminé" Then 'condition : si la données ligne I colonne 10 (=> colonne J) est égale à "Terminé"
ReDim Preserve TL(1 To NC + 2, 1 To K) 'redimensionne le tabbleau des lignes TL( 2 ligne de plus que TV a de colonnes, K colonnes)
For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
L = IIf(J < 10, J, J + 2) 'définit la variable L (en fonction de J)
TL(L, K) = TV(I, J) 'récupère dans la ligne L de TL la donnée 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
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
'renvoie dans DEST redimensionnée le tableau TL transposé
DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End If 'fin de la condition
End Sub


et merci d'avance .

Afficher la suite 
Utile
+0
plus moins
Bonjour le forum,

Ton Code !?... T'es gonflé toi !...
Haitam_mhamdi- 13 juil. 2017 à 17:45
c'est le votre j'ai pas voulu rentré dans les détail l'essentiel d'expliqué le problème et merci en tt cas
Répondre
Haitam_mhamdi- 13 juil. 2017 à 17:48
le problème que j'ai trouvé dans votre code c'est que je veux déplacer la ligne et non pas copié merci de votre attention
Répondre
Donnez votre avis
Utile
+0
plus moins
Le code répondait à ta question initiale qui était : Je veux Copier coller des lignes sur d'autres feuilles lorsque dans une une colonne de la 1ère feuille des conditions sont remplie
Haitam_mhamdi- 14 juil. 2017 à 10:36
oui mais mon encadrent ma dit qu'il faut déplacer merci de m'aider
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour le forum,

Private Sub CommandButton3_Click()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Long 'déclare la variable NL (Nombre de lignes)
Dim NC As Byte 'déclare la variable NC (Nombre de colonnes)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Long 'déclare la variable K (incrément)
Dim L As Byte 'déclare la variable L (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim LAS() As Variant 'déclare la variable LAS (Lignes à Supprimer)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS = Worksheets("Entrée de charge") 'définit l'onglet source OS
Set OD = Worksheets("Livraison") 'définit l'onglet destination OD
TV = OS.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeurs TV
NC = UBound(TV, 2) 'définit le nombre de colonnes NC du tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To NL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 10) = "Terminé" Then 'condition : si la données ligne I colonne 10 (=> colonne J) est égale à "Terminé"
    ReDim Preserve TL(1 To NC + 2, 1 To K) 'redimensionne le tableau des lignes TL( 2 ligne de plus que TV a de colonnes, K colonnes)
    ReDim Preserve LAS(1 To K) 'redimensionne le tableau LAS
    For J = 1 To NC 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV
        L = IIf(J < 10, J, J + 2) 'définit la variable L (en fonction de J)
        TL(L, K) = TV(I, J) 'récupère dans la ligne L de TL la donnée en colonne J de TV (= Transposition)
    Next J 'prochaine colonne de la boucle 2
    LAS(K) = I 'récupère dans le tableau LAS le numéro de la ligne à supprimer
    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
Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellue de destination DEST
'renvoie dans DEST redimensionnée le tableau TL transposé
DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
For I = UBound(LAS) To 1 Step -1 'boucle inversée sur tous les élément du tableau LAS
    OS.Rows(LAS(I)).Delete 'dans l'onglet source OS, supprime la ligne de l'élément
Next I 'prochain élément de la boucle
End If 'fin de la condition
End Sub

Haitam_mhamdi- 14 juil. 2017 à 17:53
Bonjour,
Merci infiniment
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !