XL 2013 Aide mise à jour fichier

  • Initiateur de la discussion Initiateur de la discussion paita
  • 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 !

paita

XLDnaute Nouveau
Bonjour

Vous allez me résoudre mon problème en 1 seconde
Mon souci :
Une base de données qui évolue chaque jour et je dois rapatrier ces données dans mon fichier "suivi" et dans les colonnes adéquates (cela va de soi) mais sans écraser les informations antérieures dans celui-ci (je renseignes des colonnes qui ne se trouve pas dans la base de données)
Je vous joins mes fichiers

Un grand et immense merci pour votre aide
 

Pièces jointes

Bonjour,

Si votre base de données écrase, elle, des données précédentes, il sera compliqué de conserver ces données dans votre suivi. L'idéal serait de cumuler les infos dans la BDD pour les retrouver dans le suivi. Néanmoins, avec la VBA, tout est possible... Hélas je ne suis pas J. Boisgontier.
 
Oui, il faut faire intervenir le VBA, je laisse cet exercice aux pros ! Pourtant une base de données avec la fonction DECALER est inépuisable. Il suffisait ensuite de rapatrier ces données avec une opération matricielle.
Merci à vous mais par les fonctions matricielles c'est pas assez figées dans mon fichier
Est-ce que tu peux donner les équivalences entre les entêtes de colonne des deux fichiers ?

merci.
On peut rebaptiser les colonnes du fichier "Base" pour être en accord avec le fichier "Suivi" pas de soucis ; en fait je me repère dans le fichier Base par la 2ème colonne
 
Essaie :

VB:
Sub MAJ()
  Dim Ligne As Long, C As Range, Plage As Range, L As Variant
  With Workbooks("Base de données.xlsx").Sheets(1)
    Set Plage = .Range("C2", .Cells(.Rows.Count, 3).End(xlUp))
  End With
  With ThisWorkbook.Sheets(1)
    Ligne = .[A:A].Find("*", , , , xlByRows, xlPrevious).Row
    For Each C In Plage
      Debug.Print C.Value
      L = Application.Match(C, .[B:B], 0)
      If Not IsNumeric(L) Then
        Ligne = Ligne + 1
        .Cells(Ligne, 1) = C.Offset(, -1).Value
        .Cells(Ligne, 2) = C.Value
        .Cells(Ligne, 3) = C.Offset(, 1)
        .Cells(Ligne, 4) = C.Offset(, 4)
        .Cells(Ligne, 5) = C.Offset(, 5)
        .Cells(Ligne, 6) = C.Offset(, 8)
        .Cells(Ligne, 7) = C.Offset(, 11)
        .Cells(Ligne, 8) = C.Offset(, 13)
      End If
    Next C
  End With
End Sub

Daniel
 
- 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
419
Réponses
5
Affichages
382
Réponses
5
Affichages
165
Retour