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

La Galère du débutant avec base de données en vba

T

TONY

Guest
Bonjour à tout le forum,

Très débutant en vba, j'essaye de faire fonctionner la macro suivante :

Dans un classeur excel, j'ai 3 feuilles :

- feuille 1 nommée "telechargement" avec des cellules liés à un autre
classeur, les données de cette feuille peuvent varier.

- feuille 2 nommée "Intermédiaire", dès que la macros est lancée on
recopie les données de la feuille "telechargement" sans les laisons
(collage spécial valeurs) à la suite des données déjà copiées.

- feuille 3 nommée "Sauvegarde", la suite de la macro doit recopier en
supprimant les doublons les données de la feuiile "Intermédiaire" ce
qui me permet d'obtenir une base de données épurées.

La macro utilisée semble posée bcp de problème :
Sub RECOPIER()

Sheets("telechargement").Select
If Range("A1") <> "" Then
Range("A1").Select
Range("A1", Range("E1").End(xlDown)).Copy
Sheets("Intermédiaire").Select
Range("A1").Select

If ActiveCell = "" Then
ActiveSheet.Paste
Application.CutCopyMode = False
Else
If ActiveCell.Offset(1, 0) = "" Then
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Else
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End If
End If

Sheets("Intermédiaire").Range("A1", Range("E1").End(xlDown)) = Sheets("Intermédiaire").Range("A1", Range("E1").End(xlDown)).Value

'Supprimer les doublons()
Sheets("intermédiaire").Select
Application.Wait (Now + TimeValue("0:00:03")) 'attente de 3 secondes
Sheets("intermédiaire").Range("A1:E2000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets("Sauvegarde").Range("A1:E2000"), Unique:=True

End Sub

Gros bug, mauvais choix de formule, je sais plus quoi utilisé !!

Merci d'avance pour toute votre aide

Tony
 

Pièces jointes

  • Exemple_Tony.zip
    49.1 KB · Affichages: 15
Z

Zon

Guest
Salut,

Cela ressemble à un truc que j'ai fait y a pas longtemps, par contre je supprime l'étape de la feuille telechargement , je mets directement le contenu de la feuille telechargement dans ta feuille intermediaire puis je filtre.

Bien entendu c'est à tester et remonter les bogues éventuels:
Option Explicit
Const NomFimporT As String = "telechargement"
Const NomF1 As String = "Intermédiaire"
Const NomF2 As String = "Sauvegarde"
Dim T
Sub Princ()
Application.StatusBar = "Patience, importation en cours"
Ouverture
If IsArray(T) Then
Sheets(NomF2).UsedRange.EntireRow.Delete
With Sheets(NomF1)
.[A65536].End(xlUp)(2).Resize(UBound(T, 1), UBound(T, 2)) = T
.UsedRange.AdvancedFilter xlFilterCopy, , Sheets(NomF2).[A1], True
End With
End If
Application.StatusBar = ""
End Sub
Private Function Ouverture()
Dim Clas As Workbook
On Error Resume Next
Application.ScreenUpdating = False
Set Clas = Workbooks.Open(OuvP)
With Clas
T = .Worksheets(NomFimporT).UsedRange
.Close 0
End With
On Error GoTo 0
End Function
Private Function OuvP()
OuvP = Application.GetOpenFilename("Fichiers Excel (*.xls),*.xls")
End Function


A+++
 
T

TONY

Guest
Merci Zon,
J'ai essayé avec ta macro (assez sympa) mais le hic c'est que je n'ai aucune valeur sur mes feuilles "Intermédiaire" et "Sauvegarde".
j'ai des valeurs sur "telechargement" qui sont mes liens avec l'autre classeur.

je vais essayé d'être plus explicatif ! je dis bien je vais essayé !

Ce que je cherche est d'obtenir une banque de données sur la feuille "Sauvegarde" (ou directement sur la feuille "Intermédiaire" si on peut) car si je tri les doublons directement les données de la feuille (ou sur la feuille) "telechargement", je n'obtiendrais que des données avec les valeurs qui ont changées mais je n'aurais pas les nouvelles valeurs qui sont apparus au fur et à mesure que j'ai ouvert le fichier.

ouh la la la la !! c vraiment pas facile à expliqué !

Je souffre ! aidez moi
Merci
A+
 
T

Tony

Guest
Merci Zon,
J'ai essayé avec ta macro (assez sympa) mais le hic c'est que je n'ai aucune valeur sur mes feuilles "Intermédiaire" et "Sauvegarde".
j'ai des valeurs sur "telechargement" qui sont mes liens avec l'autre classeur.

je vais essayé d'être plus explicatif ! je dis bien je vais essayé !

Ce que je cherche est d'obtenir une banque de données sur la feuille "Sauvegarde" (ou directement sur la feuille "Intermédiaire" si on peut) car si je tri les doublons directement les données de la feuille (ou sur la feuille) "telechargement", je n'obtiendrais que des données avec les valeurs qui ont changées mais je n'aurais pas les nouvelles valeurs qui sont apparus au fur et à mesure que j'ai ouvert le fichier.

ouh la la la la !! c vraiment pas facile à expliqué !

Je souffre ! aidez moi
Merci
A+
 
Z

Zon

Guest
Salut,

Si tu veux passer par la feuille téléchragement, modifies ce bout de code:

If IsArray(T) Then
with Sheets(NomFimport)
.UsedRange.EntireRow.Delete
.[A1].Resize(UBound(T, 1), UBound(T, 2)) = T
end with
With Sheets(NomF1)
.[A65536].End(xlUp)(2).Resize(UBound(T, 1), UBound(T, 2)) = T
.UsedRange.AdvancedFilter xlFilterCopy, , Sheets(NomF2).[A1], True
End With
End If

Je suis d'avis que c'est le filtre qui te ne réponds pas à ton besoin mais je ne comprends pas du tout ce que tu veux faire....désolé

A+++
 
A

Ak

Guest
bonjour
j'ai du mal avec le VBA par Excel
j'ai mes données dans une feuille que j'ai appelé "Enfant"
je voudrais faire une consultation
que les données qui se trouvent dans cette feuille s'affiche dans
mes textbox
comment puis-je faire?
je me galère alors qu'en VB tout cours ça marcherait plus facilement
vu que je connais mieux...
merci ...
@+
 

Discussions similaires

Réponses
12
Affichages
778
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…