Copie-colle VBA sous condition

Bonjour à vous,

Je bloque sur quelque chose qui dans ma tête me parait simple mais pour le quelle je n'arrive pas a retranscrire en VBA.

En effet j'ai 1 feuille d'importation "SAP-Import" et je voudrais que les données de cette feuille soit copier dans une autre feuille "BDD_OF_cdt" mais dans un ordre différent.

Il faudrait en plus que la boucle vérifie que ce numéro d'of existe déjà afin de ne pas le copié en doublon colonne E de BDD_OF_cdt et D de SAP-Import.

Pour résumé les données de la feuille SAP-Import doivent être copié dans BDD_OF_cdt sans que les colonnes soient au même endroit et sans avoir de doublon avec pour masterkey la colonne E de BDD_OF_cdt.

Avez-vous une idée de comment faire cela ?

Merci pour votre aide.

Ps ci joint un fichier excel avec des explications.

Cordialement,

4test-projet.xlsm (20.08 Ko)

Alors j'ai déjà avancé sur mon projet. Mais je ne sais pas comment m'y prendre pour vérifier que le masterkey soit déjà présent afin de ne pas faire de doublon quand je colle.

Ma technique est je pense un peu barbare peut-être avez vous une solution différente pour copier-coller.

8test-projet.xlsm (24.55 Ko)

Bonjour,

Si le masterkey est déjà présent, l'on écrase les données ?

Si le masterkey n'est pas présent, l'on ajoute au bas ... Est-ce bien cela ??

ric

Bonjour,

Non justement si cette colonne contient le même numéro que celui d'importation on n'importe pas les données correspondantes et on passe au suivant etc.

Cordialement,

Bonjour,

Dans ton fichier exemple, il n'y avait pas de code différent pour tester ...

Un essai ...

Ce n'est peut-être pas le code le plus rapide ...

Sub ImportationSAP()
Dim F1 As Worksheet, F2 As Worksheet, DerLig As Long, LigDep As Long
Dim CL As Range
Dim Cell As Range

   Set F1 = Worksheets("SAP_Import")
   Set F2 = Worksheets("BDD_OF_cdt")

   With F1
      DerLig = F1.Range("A" & Rows.Count).End(xlUp).Row

      For Each CL In F2.Range("E2:E" & DerLig)
         If CL.Value <> "" Then
            Set Cell = F2.Columns("E:E").Find(What:=Trim(.Cells(CL.Row, "D")), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)

            If Cell Is Nothing Then

               With Application: .ScreenUpdating = 0: .Calculation = xlCalculationManual: End With
               With F2
                  LigDep = .Range("A" & Rows.Count).End(xlUp).Row + 1

                  .Range("A" & LigDep) = F1.Range("A" & CL.Row).Value  ' A  copie le contenu de la colonne H en A
                  .Range("B" & LigDep) = F1.Range("N" & CL.Row).Value  ' N   '...
                  .Range("C" & LigDep) = F1.Range("B" & CL.Row).Value  ' B   '...
                  .Range("D" & LigDep) = F1.Range("C" & CL.Row).Value  ' C
                  .Range("E" & LigDep) = F1.Range("D" & CL.Row).Value  ' D
                  .Range("F" & LigDep) = F1.Range("E" & CL.Row).Value  ' E
                  .Range("G" & LigDep) = F1.Range("F" & CL.Row).Value  ' F
                  .Range("H" & LigDep) = F1.Range("G" & CL.Row).Value  ' G
                  .Range("I" & LigDep) = F1.Range("H" & CL.Row).Value  ' H
                  .Range("L" & LigDep) = F1.Range("I" & CL.Row).Value  ' I
                  .Range("M" & LigDep) = F1.Range("J" & CL.Row).Value  ' J
                  .Range("N" & LigDep) = F1.Range("K" & CL.Row).Value  ' K
                  .Range("Q" & LigDep) = F1.Range("O" & CL.Row).Value  ' O
                  .Range("R" & LigDep) = F1.Range("P" & CL.Row).Value  ' P
                  .Range("T" & LigDep) = F1.Range("Q" & CL.Row).Value  ' Q
                  .Range("U" & LigDep) = F1.Range("R" & CL.Row).Value  ' R
                  .Range("V" & LigDep) = F1.Range("S" & CL.Row).Value  ' S
                  .Range("W" & LigDep) = F1.Range("L" & CL.Row).Value  ' L
                  .Range("X" & LigDep) = F1.Range("T" & CL.Row).Value  ' T
               End With
            End If
         Else
            'do it another thing
         End If
      Next CL
   End With
   With Application: .ScreenUpdating = -1: .Calculation = xlCalculationAutomatic: End With
End Sub

ric

Bonjour RIC,

Désolé pour la réponse tardive. je vais regarder ça aujourd'hui et te tiens au courant

merci bien

Pour l'instant premier Test cela me semble nickel, le temps de comprendre ton raisonnement je pourrais l'adapter au besoin

Bonjour,

Je reviens vers toi comme convenu. J'ai pu faire des test et cela semble bien marcher. Je te remercie sincèrement pour ton aide.

ric

Rechercher des sujets similaires à "copie colle vba condition"