Recopie de certaines données.

zeltron24

XLDnaute Impliqué
Bonsoir le forum,

Est ce que quelqu'un aurez un peu de temps à me donner afin de me venir en aide sur un problème de recopie de données d'un tableau dans un autre tableau sous certaines conditions. J'y ai joins un fichier expliquant ce que je souhaiterai.
D'avance je vous dis un grand merci, je pense que le problème est assez complexe.
Zeltron24
 

Pièces jointes

  • Classeur1.xls
    22 KB · Affichages: 369
  • Classeur1.xls
    22 KB · Affichages: 387
  • Classeur1.xls
    22 KB · Affichages: 390

matthieu33

XLDnaute Occasionnel
Re : Recopie de certaines données.

Bonsoir Zeltron24,

Voici une solution.
Je ne sais pas si j'ai bien compris ta demande.
 

Pièces jointes

  • Classeur1_v1.xls
    33.5 KB · Affichages: 807
  • Classeur1_v1.xls
    33.5 KB · Affichages: 775
  • Classeur1_v1.xls
    33.5 KB · Affichages: 835

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Bonsoir Matthieu33,

SUPER, c'est exactement ce que je recherchai. Mille merci pour ton aide de plus aussi tot le matin (2h24). Trouves tu le temps de dormir ;-)
Qu'est ce que veut dire la valeur :For lgLig = 7 To 10 est ce que je peux aller plus loin car j'ai plus ou moins 40 lignes selon mes dépenses mensuelles.

Cordialement
zeltron24
 

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Encore moi,

Il y a un petit "os", lorsque je réalise un deuxième retrait d'espèce dans le meme mois, le programme recprends la première ligne et me la recopie avec la deuxième ce qui fausse mes données. Ne pourrions nous pas utiliser la colonne I qui si elle contient "P" ne serait plus prise en compte.

zeltron24
 

skoobi

XLDnaute Barbatruc
Re : Recopie de certaines données.

Bonsoir le fil,

en l'absence de matthieu33, je me permet de répondre.
Ajoute ce qui est en bleu:

Code:
        If Range("F" & lgLig).Value = "Retrait Espèces" [B][COLOR=Blue]And Not Range("I" & lgLig).Value = "P" [/COLOR][/B]Then

For lgLig = 7 To 10

oui, tu as juste à changer 10 par ton chiffre ou mieux càd que si ta liste augmente se qui dois être le cas, modifier à chaque la macro c'est un peu lourd.
C'est pourquoi, à la place de 10 écris [A65536].End(xlUp).Row
Celà récupère systématiquement la dernière ligne non vide de la colonne A.
 

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Bonsoir skoobi,

Je te remercie pour ton aide. Puis je me permettre d'etre encore plus "gourmand". Serait il possible de m'afficher un message qui me dirait que j'ai déjà effectuer la copie dans le tableau 2 si j'appuie par exemple 2 fois ou plus sur le bouton de la macro.
d'avance merci
 

skoobi

XLDnaute Barbatruc
Re : Recopie de certaines données.

Re,

en bleu les ajouts:

Code:
Private Sub cmdCopierVers_Click()
    Dim lgLig As Long
    Dim lgDerLig As Long
[B][COLOR="Blue"]If Range("A1").Value = 1 Then
    MsgBox "la copie dans le tableau 2 a déjà été faite."
    Range("A1").Clear
    Exit Sub
End If[/COLOR][/B]
    
    ' Tableau 1 : Boucle de la ligne 7 à 10
    For lgLig = 7 To 10
        ' Uniquement le retrait d'espèces
        If Range("F" & lgLig).Value = "Retrait Espèces" And Not Range("I" & lgLig).Value = "P" Then            ' Dernière ligne libre en colonne AB
            lgDerLig = Range("AB" & Cells.Rows.Count).End(xlUp).Row + 1
            Range("AB" & lgDerLig).Value = Range("B" & lgLig).Value
            Range("AC" & lgDerLig).Value = Range("F" & lgLig).Value
            Range("AE" & lgDerLig).Value = Range("G" & lgLig).Value
            [B][COLOR="Blue"]Range("A1").Value = 1[/COLOR][/B]
        End If
    Next lgLig
[B][COLOR="Blue"]If Range("A1").Value = "" Then MsgBox "Pas de copie à faire dans le tableau 2."[/COLOR][/B]
End Sub

Remarque: une valeur se met ou non dans A1, ne rien mettre donc en A1 sous peine d'être effacé!!!

Edit: autre chose, il faut penser à supprimer ce qui se trouve en A1 avant de sauvegarder le fichier
 
Dernière édition:

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Re,

Cela fonctionne correctement que si j'appuie que deux fois sur le bouton. Mais si par exemple je ferme le classeur et que le lendemain je ne me souviens plus si j'ai fais le transfert et que je rappui sur le bouton, A1 étant repassé à "" je réinscrit une nouvelle fois les lignes. Il faudrait que dans la colonne I "P" s'inscrive automatiquement. Que penses tu si je rajoute la ligne
Range("I" & lgLig).Value = "P" Mais à quel endroit ?
 

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

re,

J'ai modifié comme ceci, mais cela ne fonctonne pas correctement

Sub CopierVers()
Dim lgLig As Long
Dim lgDerLig As Long
Dim VNb As String

VNb = 1
Range("B2") = VNb

If Range("B2").Value >= 2 Then
MsgBox "Pas de copie à faire dans le tableau 2."
' Range("B2").Clear
Exit Sub
End If

' Tableau 1 : Boucle de la ligne 11 à 59
For lgLig = 11 To 59
' Uniquement le retrait d'espèces
If Range("F" & lgLig).Value = "Retrait Espèces" And Not Range("I" & lgLig).Value = "P" Then ' Dernière ligne libre en colonne V
lgDerLig = Range("V" & Cells.Rows.Count).End(xlUp).Row + 1
Range("V" & lgDerLig).Value = Range("B" & lgLig).Value 'Date de l'opération
Range("W" & lgDerLig).Value = Range("F" & lgLig).Value 'Nature de l'opération
Range("Z" & lgDerLig).Value = Range("G" & lgLig).Value 'Montant de l'opération
Range("B2").Value = VNb + 1

End If
Next lgLig
Application.GoTo Reference:="Liquide12"
Range("U10").Select
MsgBox "la copie a été réalisée."
Range("A10").Select

End Sub
 

matthieu33

XLDnaute Occasionnel
Re : Recopie de certaines données.

Bonsoir Zeltron24, Skoobi et le forum,

Voici une solution en mettant la valeur P en colonne I.

Code:
Private Sub cmdCopierVers_Click()
    Dim lgLig As Long
    Dim lgDerLig As Long
    
    If Range("A1").Value = 1 Then
        MsgBox "la copie dans le tableau 2 a déjà été faite."
        Range("A1").Clear
        Exit Sub
    End If
    
    ' Tableau 1 : Boucle de la ligne 7 à 10
    For lgLig = 7 To Range("B" & Cells.Rows.Count).End(xlUp).Row
        ' Uniquement le retrait d'espèces
        If Range("F" & lgLig).Value = "Retrait Espèces" And Not Range("I" & lgLig).Value = "P" Then            ' Dernière ligne libre en colonne AB
            lgDerLig = Range("AB" & Cells.Rows.Count).End(xlUp).Row + 1
            Range("AB" & lgDerLig).Value = Range("B" & lgLig).Value
            Range("AC" & lgDerLig).Value = Range("F" & lgLig).Value
            Range("AE" & lgDerLig).Value = Range("G" & lgLig).Value
            Range("A1").Value = 1
            [COLOR="Blue"]Range("I" & lgLig).Value = "P"[/COLOR]
        End If
    Next lgLig
    
    If Range("A1").Value = "" Then MsgBox "Pas de copie à faire dans le tableau 2."
End Sub

Par rapport à ton dernier code transmis, la cellule B2 ne pourra jamais être >=2 puisque tu mets en début de procédure : VNb = 1 et Range("B2") = VNb
donc B2 sera toujours égale à 1

PS : merci Skoobi pour ton aide
 

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Bonsoir ou plutot bonjour matthieu33,

Grace à toi et à skoobi, j'ai remis dans mon fichier original vos modifs et je vous dis merci cela fonctionne correctement.
Cependant la première condition ne pourra jamais à mon avis se réaliser (msgbox "Pas de copie..........." ) car à chaque nouvel appuie sur le bouton je remets à 0 B2 (range("B2").clear Peux t on faire la différence entre

1- La copie réalisée (1ère action sur le bouton)
et
2 - La copie déjà réalisée (2ème action sur le bouton)

Sub CopierVers()
Dim lgLig As Long
Dim lgDerLig As Long

Range("B2").Clear

If Range("B2").Value = 1 Then
MsgBox "Pas de copie à faire dans le tableau 2." Range("B2").Clear
Exit Sub
End If

' Tableau 1 : Boucle de la ligne 11 à 59
For lgLig = 7 To Range("B" & Cells.Rows.Count).End(xlUp).Row

' Uniquement le retrait d'espèces
If Range("F" & lgLig).Value = "Retrait Espèces" And Not Range("I" & lgLig).Value = "P" Then ' Dernière ligne libre en colonne V
lgDerLig = Range("V" & Cells.Rows.Count).End(xlUp).Row + 1
Range("V" & lgDerLig).Value = Range("B" & lgLig).Value 'Date de l'opération
Range("W" & lgDerLig).Value = Range("F" & lgLig).Value 'Nature de l'opération
Range("Z" & lgDerLig).Value = Range("G" & lgLig).Value 'Montant de l'opération
Range("B2").Value = 1
Range("I" & lgLig).Value = "P"
End If
Next lgLig


Application.GoTo Reference:="Liquide12"
Range("U10").Select
MsgBox "la copie a été réalisée." Range("A10").Select

End Sub
 

matthieu33

XLDnaute Occasionnel
Re : Recopie de certaines données.

Voici une autre solution qui peut te convenir :

Code:
Sub CopierVers()
Dim lgLig As Long
Dim lgDerLig As Long
[COLOR="Blue"]Dim bCopie As Boolean[/COLOR]

[COLOR="blue"]bCopie = False[/COLOR]

' Tableau 1 : Boucle de la ligne 11 à 59
For lgLig = 7 To Range("B" & Cells.Rows.Count).End(xlUp).Row

' Uniquement le retrait d'espèces
If Range("F" & lgLig).Value = "Retrait Espèces" And Not Range("I" & lgLig).Value = "P" Then ' Dernière ligne libre en colonne V
lgDerLig = Range("V" & Cells.Rows.Count).End(xlUp).Row + 1
Range("V" & lgDerLig).Value = Range("B" & lgLig).Value 'Date de l'opération
Range("W" & lgDerLig).Value = Range("F" & lgLig).Value 'Nature de l'opération
Range("Z" & lgDerLig).Value = Range("G" & lgLig).Value 'Montant de l'opération
Range("B2").Value = 1
Range("I" & lgLig).Value = "P"
[COLOR="blue"]bCopie = True[/COLOR]
End If
Next lgLig


Application.GoTo Reference:="Liquide12"
Range("U10").Select

[COLOR="blue"]If bCopie = True Then
    MsgBox "la copie a été réalisée."
Else
    MsgBox "Pas de copie à faire dans le tableau 2."
End If[/COLOR]
Range("A10").Select

End Sub
 

zeltron24

XLDnaute Impliqué
Re : Recopie de certaines données.

Bonsoir le forum,

Suite à mon fil de hier, je reviens dessus car je n'arrive pas à transférer les données sur une autre feuille du classeur. Quelqu'un pourrait il me trouver une solution. Voici ci joint un fichier.
D'avance merci.
zeltron24
 

Pièces jointes

  • Test.xls
    46 KB · Affichages: 112
  • Test.xls
    46 KB · Affichages: 111
  • Test.xls
    46 KB · Affichages: 118

léti07

XLDnaute Nouveau
Re : Recopie de certaines données.

bonjour à tous,:)

J'ai aussi le même problème que Zeltron24, je n'arrive pas à copier certaines données de mon tableau dans un autre classeur.
Si quelqu'un a une solution elle est la bienvenue.
Merci d'avance pour votre aide
Léti07
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 504
Membres
103 565
dernier inscrit
Fabien78