Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transfert de données

11 réponses
Avatar
Apitos
Bonsoir,

Comment faire pour copier une ligne du tableau (A1:En) dans celui de
(H1:Kn) si l'intersection de la ligne =E0 copier avec la colonne E
contient une croix "x" ?

L'exemple en fichier joint.

http://cjoint.com/?mAq0i5FSAz

Merci,

10 réponses

1 2
Avatar
Daniel.C
Bonsoir.
Mets dans le code de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
If Target.Offset(, -4) = "" Then Exit Sub
If Target = "x" Then
Range("A" & Target.Row & ":D" & Target.Row).Copy _
Range("H65536").End(xlUp).Offset(1)
End If
End Sub
(regarde ton classeur modifié : http://cjoint.com/?mArNhurn7J)
Cordialement.
Daniel
"Apitos" a écrit dans le message de news:

Bonsoir,

Comment faire pour copier une ligne du tableau (A1:En) dans celui de
(H1:Kn) si l'intersection de la ligne à copier avec la colonne E
contient une croix "x" ?

L'exemple en fichier joint.

http://cjoint.com/?mAq0i5FSAz

Merci,
Avatar
Apitos
Bonsoir Daniel,

Mais si on continue à copier les données, le tableau en bleu sera
écrasé).

Et si la ligne 11 (pour le tableau en bleu) contient des données, la
ligne copiée sera écrite à la suite de cette dernière (ligne 12 ici) !

Comment procède-t-on pour traiter ces cas :

1 - S'il y'a un "x" dans la colonne E, la ligne correspondante sera
copié sans doublons dans le tableau d'à coté.

2 - Si on enlève le "x", la ligne désignée sera effacer du deuxième
tableau.

3 - Si on arrive à proximité d'une ligne du tableau bleu, on insère
une ligne blanche, avant de copier la ligne marquée par un "x".

Merci à tous.
Avatar
LSteph
bonsoir,

Private Sub Worksheet_Change(ByVal Target As Range)
Dim iSect As Range, laplage As Range, c As Range
With [a2].CurrentRegion.Columns(1)
Set laplage = Range("a2", "a" & _
.Cells(.Cells.Count).Row).Offset(0, 4)

Set iSect = Intersect(Target, laplage)
If iSect Is Nothing Then Exit Sub

Range([h1].CurrentRegion.Rows(2), _
[h1].CurrentRegion.Rows(.Rows.Count)).Clear
For Each c In laplage.Cells
With [h1].CurrentRegion
If LCase(c) = "x" Then
Range(c.Offset(0, -4).Address, _
c.Offset(0, -1).Address).Copy _
Destination:=.Rows(.Rows.Count)(2)
End If
End With
Next

End With
End Sub

'lSteph


Bonsoir Daniel,

Mais si on continue à copier les données, le tableau en bleu sera
écrasé).

Et si la ligne 11 (pour le tableau en bleu) contient des données, la
ligne copiée sera écrite à la suite de cette dernière (ligne 12 ici) !

Comment procède-t-on pour traiter ces cas :

1 - S'il y'a un "x" dans la colonne E, la ligne correspondante sera
copié sans doublons dans le tableau d'à coté.

2 - Si on enlève le "x", la ligne désignée sera effacer du deuxième
tableau.

3 - Si on arrive à proximité d'une ligne du tableau bleu, on insère
une ligne blanche, avant de copier la ligne marquée par un "x".

Merci à tous.





Avatar
Apitos
Bonjour L.Steph.

Je vais essayé ton code.

Voilà mon nouveaui fichier modifié.

http://cjoint.com/?mBbOPKa8jy

mais il reste encore des erreurs.

Merci.
Avatar
Apitos
Bonjour L.Steph.

Ca marche très bien, sauf qu'il y'a un petit problème :

Parfois le remboursement des crédits se fait en deux, voir plusieurs
tranches.

Jusqu'à maintenant je saisi ces données manuellement (sauf s'il existe
une idée de le faire cette tache en vba !), donc pas de croix dans le
premier tableau or la somme est saisie en sa totalité. Ce qui nous
amène à voir ces données s'effacer du deuxième tableau avant que le
code ne copie que les lignes marquées par une croix dans le premier
tableau.

Y'a-t-il une solution à ce problème ?

Merci.
Avatar
lSteph
Bonjour,

je ne comprends pas bien,

si tu saisis tes données dans le premier tableau elles sont dans le
premier tableau ,
tant que tu n'as pas supprimé, collé par dessus ou entré
une ou plusieurs croix à la fois
dans la colonne cible, rien ne change dans le tableau2

peux tu préciser davantage ou mettre un exemple plus concret en
http://cjoint.com et nous redonner le lien.

@+

lSteph

On 27 déc, 12:31, Apitos wrote:
Bonjour L.Steph.

Ca marche très bien, sauf qu'il y'a un petit problème :

Parfois le remboursement des crédits se fait en deux, voir plusieurs
tranches.

Jusqu'à maintenant je saisi ces données manuellement (sauf s'il existe
une idée de le faire cette tache en vba !), donc pas de croix dans le
premier tableau or la somme est saisie en sa totalité. Ce qui nous
amène à voir ces données s'effacer du deuxième tableau avant que l e
code ne copie que les lignes marquées par une croix dans le premier
tableau.

Y'a-t-il une solution à ce problème ?

Merci.


Avatar
Apitos
Bonsoir,

Peut-être que ce fichier explique quelque chose :

http://cjoint.com/?mBtpd1EkvL

Merci.
Avatar
LSteph
Bonsoir,
Ce que tu suggères soudain ne va plus
déjà sur la position initiale
Elle sort de la logique définie essentiellement sur le point 2 -
si des lignes n'ont pas de x elles disparaissent (relis ton article2)
il ne peut donc y avoir plus de lignes dans le tableau2 que dans le 1
car toute ligne qui n'a pas de x est supprimée.
Donc toute ligne qui serait dans le tanbleau2 alors qu'elle n'est plus
dans le tableau1 n'a frorcément pas de x , aussi en toute logique
elle disparait...!

2 - Si on enlève le "x", la ligne désignée sera effacer du deuxième
tableau.


Ensuite c'est donc dans le tableau1 que tu dois faire attention..
3 - Si on arrive à proximité d'une ligne du tableau bleu, on insère
une ligne blanche, avant de copier la ligne marquée par un "x".
avant d'ajouter des données dans le tableau1 si tu vois que tu vas

toucher celui d'en dessous ....insère donc une ligne..non?


@+

--
lSteph

Bonsoir,

Peut-être que ce fichier explique quelque chose :

http://cjoint.com/?mBtpd1EkvL

Merci.


Avatar
Apitos
Bonsoir,
Ce que tu suggères soudain  ne va plus
déjà sur la position initiale
Elle  sort de la logique définie essentiellement sur le point 2 -
si des lignes n'ont pas de x elles disparaissent (relis ton article2)
il ne peut donc y avoir plus de lignes dans le tableau2 que dans le 1
car toute ligne qui n'a pas de x est supprimée.
Donc toute ligne qui serait dans le tanbleau2 alors qu'elle n'est plus
dans le tableau1 n'a frorcément pas de x , aussi en toute logique
elle disparait...!


Oui vue de cet ongle tu as raison.

Mais, le remboursement d'une somme creditée n'est pas forcémént fait
en sa totalite en une seule fois dans tout les cas.

Alors, j'ai pensé à integrer ce cas.
ALors surement

2 - Si on enlève le "x", la ligne désignée sera effacer du deuxi ème
tableau.



Par exemple, j'enleve le "x" si je me suis trompé sur la ligne à
copier.

avant d'ajouter des données dans le tableau1 si tu vois que tu vas
toucher celui d'en dessous ....insère donc une ligne..non?


L'insertion d'un ligne vide au dessus du tableau1 se fera
manuellement.

Mais celle du tableau2 ce fait automatiquement.


Avatar
LSteph
Suggestions:

Mais, le remboursement d'une somme creditée n'est pas forcémént fait
en sa totalite en une seule fois dans tout les cas.



tu gardes la 1ère somme au chaud dans le tableau1
quand c'est complet tu rectifies et mets le x



L'insertion d'un ligne vide au dessus du tableau1 se fera
manuellement.

Mais celle du tableau2 ce fait automatiquement.



Non, les deux en même temps, quand tu vois que le 1
(qui a forcément toujours autant ou plus de lignes que le 2)
va toucher celui d'en dessous tu ajoutes la ligne pour toute la largeur
de ta feuille.

Cordialement.

--
lSteph

1 2