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

2

2susy

Guest
bonjour à tous,

je vous soumets ma question relative à la mise à jour d'une base de données, avec macro j'imagine pour modifier les colonnes voulues et conserver d'autres données,

merci d'avance pour vos idées, je suis sure que vous avez des solutions !!
 

Pièces jointes

Re : Mise à jour bdd

Bonjour Susy, bonjour le forum,

Pour moi c'est pas clair :

- si le nom est présent dans BASEDEW, il y ait une mise à jour des colonnes B, C, D
- sinon, rajout d'une ligne par ordre alphabétique
donc elle y sera forcément dans EXTRACTIONDEDONNEES... A quoi sert la ligne en dessous alors ?
- si le nom n'est pas dans EXTRACTIONDEDONNEES, supprimer la ligne dans BASEDEW
 
Re : Mise à jour bdd

j'espère que mon explication avec les exemples sera plus claire :

- pour gabriel, jules, sophie et thomas : mise à jour des colonnes B C et D avec les nouvelles données contenues dans EXTRACTIONDONNEES

- comme pierrick n'apparait pas dans BASEDEW, c'est une nouvelle ligne à ajouter

- elisabeth n'apparait pas dans EXTRACTIONDONNEES, sa ligne est donc à supprimer dans BASEDEW, on considère que cette personne est partie

voilà, merci encore pour votre aide,
 
Re : Mise à jour bdd

Bonjour Susy, bonjour le forum,

Oui pardon Susy. Mon petit cerveau mononeuronal avait inversé les onglets. Je pensais au départ que tu voulais extraire les donnés de la base pour actualiser l'onglet EXTRACTIONDONNEES...

Voici une macro en pièce jointe qui devrait te convenir :
 

Pièces jointes

Re : Mise à jour bdd

merci robert dans l'idée c'est tout à fait ce que je voulais !! et pour le rajout d'une ligne dans BASEDEW quand il y a un nouveau nom dans EXTRACTIONDONNEES? c'est envisageable??

après c'est dans l'application à mes données réelles que c'est la cata !! en effet j'ai une base qui est énorme (environ 2500 lignes) et lors du calcul, mon ordi mouline tant que je l'ai arrêté avant d'avoir vu le résultat...

même si je suis consciente qu'excel n'est pas fait pour ça, est-ce qu'il y a un moyen d'alléger le calcul? (à part couper le ventilo du pc?)
 
Re : Mise à jour bdd

Bonjour Susy, bonjour le forum,

Oui ma méthode est très lente sur une grande base car elle prend une cellule de l'onglet Extraction et la compare, ligne par ligne, aux cellules de la base. Déjà c'est long, mais à la fin j'en remets un couche pour supprimer les lignes superflues... En plus, si tu as des doublons en colonne A l'actualisation risque de ne pas se faire sur la bonne ligne.

Je regarde si je trouve une autre solution. Peut-on envisager de trier les deux onglets par ordre alphabétique sur la colonne A et de les laisser ainsi ? On gagnerait certainement du temps.
 
Re : Mise à jour bdd

merci robert de t'intéresser à mon cas !!
ça me rassure en effet que ce ne soit pas mon ordi qui rame comme un fou !!
effectivement le classement par ordre alpha est très envisagé !!
merci encore et bonne recherche !!
susy
 
Re : Mise à jour bdd

Bonjour Susy, bonjour le forum,

Hier je me suis creusé la cervelle (j'ai donc surtout brassé beaucoup d'air...) mais malheureusement je n'ai pas trouvé une solution convenable. C'est que ton problème est complexe car non seulement tu veux supprimer des données de la base qui n'apparaissent plus dans ExtractionDonnees mais il faut aussi ajouter les nouvelles. Du coup, même en triant, quand je compare deux cellules je ne sais pas si il faut l'effacer ou l'ajouter... Désolé.
 
Re : Mise à jour bdd

Merci Robert de t'être creusé les méninges comme ça !!
j'ai trouvé un autre moyen de faire la mise à jour, à l'aide de RECHERCHEV tout simplement, même si le résultat est moins "clean" ça fonctionne.

C'est là que les pros en macros comme toi peuvent m'aider, à partir de cette mise à jour, est-il possible d'au moins supprimer les lignes qui n'apparaissent plus dans la nouvelle extraction de données?

merci encore pour votre aide !!
 
Re : Mise à jour bdd

Bonjour Susy, Jean-Pierre

je ne sais pas si j'ai bien compris, peut être une solution en utilisant la méthode "Find", avoir si cela peut convenir.

Code:
Sub test()
Dim c As Range, x As Range
With Sheets("EXTRACTIONDONNEES")
    For Each c In .Range("A2:A" & .Range("A65536").End(xlUp).Row)
        With Sheets("BASEDEW")
            Set x = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Find(c.Value, , xlValues, xlWhole, , , False)
            If x Is Nothing Then
                .Range("A" & .Range("A65536").End(xlUp).Row + 1).Value = c.Value
                .Range("B" & .Range("B65536").End(xlUp).Row + 1).Value = c.Offset(0, 1).Value
                .Range("C" & .Range("C65536").End(xlUp).Row + 1).Value = c.Offset(0, 2).Value
                .Range("D" & .Range("D65536").End(xlUp).Row + 1).Value = c.Offset(0, 3).Value
            End If
        End With
    Next c
End With
With Sheets("BASEDEW")
    For Each c In .Range("A2:A" & .Range("A65536").End(xlUp).Row)
        With Sheets("EXTRACTIONDONNEES")
            Set x = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Find(c.Value, , xlValues, xlWhole, , , False)
            If x Is Nothing Then
                c.EntireRow.Delete
            End If
        End With
    Next c
End With
End Sub

bonne journée
@+
 
Re : Mise à jour bdd

Merci Pierrot, tu as tout à fait compris ma demande et ça fonctionne très bien même sur 2500 lignes,
en revanche il reste une chose, comme ma mise à jour se fait par des recherchev, et la ligne qui est vouée à être supprimée n'est pas vide car elle contient "REF#"
peut-on remédier à ce problème??
promis pour le reste je me débrouille toute seule !!
 
Re : Mise à jour bdd

Re

pas vu de formule dans le fichier... Pensais que la mise à jour devait se faire par macro, d'ou le code que j'ais créé dans ce sens...

Onglet "BASEDEW" tes formules ?

un petit extrait de fichier en pièce jointe, avec types de donnée rééls serait plus facile pour adapter.

@+
 
Re : Mise à jour bdd

Re

comprends pas trop, les formules dans "BASEDEW" font reference à "EXTRACTIONDONNEES"...

La macro compare tous les noms de l'onglet "EXTRACTIONDONNEES" avec ceux de l'onglet "BASEDEW".
Si ils n'y sont pas elle recopie de la ligne vers l'onglet "BASEDEW".

ensuite comparaison des noms de l'onglet "BASEDEW" avec ceux de l'onglet "EXTRACTIONDONNEES".
Si ils n'y sont pas suppression de la ligne dans l'onglet "BASEDEW".

dans ce cas je pensais que la macro faisait tout...donc pour moi pas besoin de formule, mais sans doute quelque chose m'a échappé...très possible...

A te lire, sinon il est possible en début de macro de faire un "copier" et "collage spéciale" des valeurs de la feuille "BASEDEW"...

bon après midi
@+
 
Re : Mise à jour bdd

oui la macro de robert complétée par la tienne fait tout mais la macro de robert est très très lente avec 2500 lignes ce qui fait que j'ai recours à des formules qui font le calcul plus rapidement
Mais je ne suis pas très logique non plus sans doute 😉
est-ce que si je remplace

If x Is Nothing Then

par quelque chose du type :

If x Is "#REF!"

ça peut marcher??
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
0
Affichages
188
Réponses
8
Affichages
305
Retour