VBA Transfert deux opérations sur une même ligne

deudecos

XLDnaute Impliqué
Bonjour à toutes et à tous.

Pourriez-vous m'expliquer comment je dois procéder pour aller chercher une info sur une feuille pour ensuite la copier sur une autre feuille alors que la ligne destinataire contient déjà des infos...
Je sais, vous n'avez pas compris un traitre mot de ce que je viens de dire... C'est pourquoi je vous joints un exemple de ce que je souhaite en espérant que ça vous parle un peu plus.

Merci.

J'ai oublié un détail, dans le code du fichier joint, j'ai fait un premier transfert des recettes, et tenté de faire le transfert des dépenses, or c'est à ce moment précis que je plante... A savoir que j'arrive à transférer une première ligne mais pas la seconde puisqu'à la place c'est encore la première qui se duplique.
 

Pièces jointes

  • Essai.xlsm
    34.6 KB · Affichages: 43
  • Essai.xlsm
    34.6 KB · Affichages: 49
  • Essai.xlsm
    34.6 KB · Affichages: 50
Dernière édition:

Paf

XLDnaute Barbatruc
Re : VBA Transfert deux opérations sur une même ligne

Bonjour

le code de Private Sub CommandButton1_Click() de UserForm1 modifié:

Code:
Private Sub CommandButton1_Click()

 Dim WTab As Worksheet, WList As Worksheet, Flag As Boolean
 Set WTab = Worksheets("Tab")
 Set WList = Sheets("Liste")

 WTab.Range("A10:AG80").ClearContents
 Flag = False
 Dim L As Integer, i As Integer, J As Integer
 L = WList.Range("A65000").End(xlUp).Row
    For i = 2 To L
        
        If WList.Range("F" & i) = "R" Then
            For J = 10 To WTab.Range("A80").End(xlUp).Row
                If WTab.Range("A" & J) = WList.Range("A" & i).Value Then
                    If WTab.Range("B" & J) = "" Then
                        WTab.Range("B" & J) = WList.Range("C" & i).Value
                        WTab.Range("C" & J) = CDbl(WList.Range("E" & i).Value)
                        Flag = True
                        Exit For
                    End If
                End If
            Next
            If Not Flag Then
                M = WTab.Range("A80").End(xlUp).Row + 1
                WTab.Range("A" & M) = WList.Range("A" & i).Value
                WTab.Range("B" & M) = WList.Range("C" & i).Value
                WTab.Range("C" & M) = CDbl(WList.Range("E" & i).Value)
            End If
        End If
        Flag = False
        
        If WList.Range("F" & i) = "D" Then
            For J = 10 To WTab.Range("A80").End(xlUp).Row
                If WTab.Range("A" & J) = WList.Range("A" & i).Value Then
                    If WTab.Range("AD" & J) = "" Then
                        WTab.Range("AD" & J) = WList.Range("B" & i).Value
                        WTab.Range("AE" & J) = CDbl(WList.Range("E" & i).Value)
                        Flag = True
                        Exit For
                    End If
                End If
            Next
            If Not Flag Then
                M = WTab.Range("A80").End(xlUp).Row + 1
                WTab.Range("A" & M) = WList.Range("A" & i).Value
                WTab.Range("AD" & M) = WList.Range("B" & i).Value
                WTab.Range("AE" & M) = CDbl(WList.Range("E" & i).Value)
            End If
        End If
        Flag = False

    Next
    
 Unload Me
End Sub


le code aurait pu être plus optimisé, mais d'abord voir si ça convient

A+
 

deudecos

XLDnaute Impliqué
Re : VBA Transfert deux opérations sur une même ligne

Bonjour Paf, le forum,

Merci pour ce bout de code qui fonctionne à merveille.
Ca faisait un moment que je cherchais à m'adapter à la logique de ce que je voulais, mais pas moyen d'y parvenir... Ahhh vieillesse ennemie...
Je vais maintenant l'adapter à ma sauce et ça devrait faire l'affaire! ;-)
Bon dimanche et merci encore.

Olivier
 

Discussions similaires