Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Transfert de données - Deux classeurs - vba

  • Initiateur de la discussion Initiateur de la discussion Celeda
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Celeda

XLDnaute Barbatruc
Bonjour,

Je rencontre quelques soucis avec les formules pour transférer des infos du classeur1-master vers le classeur2-esclave.
C'est le 1 qui met à jour le 2.Je pense que le binzz dans le transfert des données de l'un à l'autre tient aux nombre de lignes importantes et le fait que les deux classeurs soient très importants et surtout qu'il doit y avoir dans les classeurs quelques imperfections qui font que je n'arrive pas à faire matcher correctement les critères et surtout que je perds un temps fou à vérifier quelle donnée a été zappée.

Je m'explique :
dans le classeur1, en fonction du crit1 et du crit2, je reporte le crit5.
c'est celle du classeur1 qui va aller écraser celle du crit5.et mettre à jour le classeur2.
Mais argument à retenir car les deux classeurs n'ont pas été représentés de la même manière:
Si dans le classeur 1, le crit 5 est égal à 0,
et que dans le classeur 2, le crit 5 est égal à 1
on n'écrase rien, on laisse le 1 dans le classeur 2

Si dans le classeur 1, le crit 5 est égal à 0,
et que dans le classeur 2, le crit 5 est égal à 2
on change le 2 par un 1

Si dans le classeur 1, le crit 5 est égal à 1,
et que dans le classeur 2, le crit 5 est égal à 1
on change le 1 par un 2

récapitulons =
0 est égal 1 dans le classeur 2
1 est égal à 2 dans le classeur 2

Je suis donc à la recherche d'un code simple qui puisse faire le travail rapidement et sans erreur. Je ne dis pas que les formules me donnent les erreurs, je pense qu'une certaine lourdeur s'installe à un moment parce que je travaille sur deux classeurs différents parce que je passe par des calculs intermédiaires du type sommeprod et index.
Je vous remercie à l'avance de votre aide et j'espère avoir été claire.
 

Pièces jointes

Re : Transfert de données - Deux classeurs - vba

Salut ...

Donc un petit tour de plus,
Code:
Sub UnVersDeux()
  Dim WbSource As Workbook, WbDest As Workbook, Chemin As String
  Dim WsDest As Worksheet, Rng As Range, Cel As Range, L As Long, C As Integer

  With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
  End With
  Chemin = ThisWorkbook.Path  'suppose que les 2 classeurs sont dans le même dossier
  Set WbSource = ThisWorkbook  'classeur du code
  [COLOR="Red"]If IsWorkbookOpen("Classeur2-esclave.xls") = True Then
    Set WbDest = Workbooks("Classeur2-esclave.xls")  'on peut tester si ouvert,si pas ouvert l'ouvrir
  Else
    Workbooks.Open Filename:=Chemin & "\" & "Classeur2-esclave.xls"
    Set WbDest = ActiveWorkbook
  End If[/COLOR]
 Set WbDest = Workbooks("Classeur2-esclave.xls")
  With WbSource.Worksheets("Feuil1")
    Set Rng = .Range("A2:A" & .Range("A65536").End(xlUp).Row)  'crit5 classeur source
  End With
  For Each Cel In Rng
    With WsDest
      For L = 2 To .Range("A65536").End(xlUp).Row
        [COLOR="Blue"]If Cel <> "" Then
          If Cel & Cel.Offset(0, 1) = .Cells(L, 1) & .Cells(L, 2) Then
            C = Cel.Offset(0, 4)
            If C = 0 Or C = 1 Then .Cells(L, 3) = C + 1
          End If[/COLOR]
        End If
      Next L
    End With
  Next Cel
  With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
  End With
End Sub
Remarque : les changements sont en bleu (seules les lignes en rouge ne passent pas avec ma version).

Bebere, avec ta dernière proposition, j'ai aussi une erreur sur la même ligne.
 
Dernière édition:
Re : Transfert de données - Deux classeurs - vba

bonjour Fo_rum
testé avec C as Variant et plus d'erreur(pour expliquer,je ne vois pas)
essayé plusieurs fois(avant envoi) avec c as integer et pas de problèmes,Celeda me signale l'erreur
nouvel essai et erreur????
pour le code en rouge as-tu la fonction

'auteur Dana DeLouis
Function IsWorkbookOpen(wbName As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Len(Workbooks(wbName).Name)
End Function

à bientôt
 
Re : Transfert de données - Deux classeurs - vba

Re

j'avais rencontré ce problème d'où la déclaration de C en Variant dans le code du message #9.
J'ai bien les 2 fichiers dans le même répertoire, la fonction provoque l'erreur 9 😱.
 
Dernière édition:
Re : Transfert de données - Deux classeurs - vba

Bonjour,

oh oh oh oh !!!! vous êtes des amours!!!!🙂

Tout fonc tio n n e!!!!!!! chouettte alors.

Bebere et For um!! je vous bise!! un gros merci

et désolée pour les péripéties mais il est vrai qu'on ne devient pas cuisinier simplement en lisant les recettes!!😀

🙂🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
232
Réponses
5
Affichages
63
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
70
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…