[XL-2013]Copier des données d'un classeur A ouvert, vers un classeur B ferm

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
Pantoulfe
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 17 décembre 2018
Version d'Excel : 2013

Message par Pantoulfe » 21 janvier 2019, 12:28

Bonjour à tous,

Tout d’abord, je n’ai pas une grande connaissance de VBA.
J’ai effectué quelques recherches pour produire un premier code, mais malheureusement ça va un peu loin dans mes connaissances.

Ma problématique actuelle :
Je manipule un classeur qui possède 2000 lignes (j’ajoute des lignes sur plusieurs onglets et supprime des données sur plusieurs onglets). Mon problème, c'est que lorsque je souhaite l'ouvrir celui-ci prend plusieurs minutes à s'ouvrir et étant donné que le fichier grossi, cela risque de se compliqué davantage.

Mon souhaite :
- Ouvrir un fichier A, écrire des données et copier ses données dans le fichier B fermé (les inséré à partir de la dernière ligne vide).
- Le fichier B fermé possède déjà plusieurs lignes donc il faudrait les copier, à partir des prochaines lignes vides.
- Supprimer une plage de données, sur plusieurs onglets dans le ficher B fermé depuis le fichier A ouvert.
- Vérifier depuis le fichier A ouvert, si une donnée est présente ou pas dans une colonne du fichier B fermé.

Au besoin, je peux vous fournir ss ou un fichier réduit.
Merci pour votre aide.
P
Pantoulfe
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 17 décembre 2018
Version d'Excel : 2013

Message par Pantoulfe » 24 janvier 2019, 11:56

Hello,

Une petite idée de comment je pourrais faire ?
Est-ce que le modèle ADO est possible pour ce que je veux faire ?

Merci d'avance.
P
Pantoulfe
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 17 décembre 2018
Version d'Excel : 2013

Message par Pantoulfe » 25 janvier 2019, 18:38

Bonsoir,

Je continue dans la souffrance :mrgreen:

Avec ce code, j'ai réussi à écrire dans mon classeur fermé :
Sub ajoutEnregistrement()
    Dim Cn As ADODB.Connection
    Dim Fichier As String, Feuille As String, strSQL As String
    Dim LaDate As Date
    Dim PrixUnit As Integer
    Dim leNom As String, lePrenom As String

    'Définit le classeur fermé servant de base de données
    Fichier = ".\Base_de_donnees.xls"
    
    'Nom de la feuille dans le classeur fermé
    Feuille = "Feuil1"
    
    'Les données à insérer:
    LaDate = CDate("2015/12/05")
    leNom = "NOM_A"
    lePrenom = "PRENOM_A"
    PrixUnit = 1
    
    Set Cn = New ADODB.Connection
    
    '--- Connection ---
    With Cn
        .Provider = "MSDASQL"
        .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
            "DBQ=" & Fichier & "; ReadOnly=False;"
        .Open
    End With
    
    'Les données doivent être indiquées dans le même ordre que les champs dans la base de données.
    strSQL = "INSERT INTO [" & Feuille & "$] " _
        & "VALUES (#" & LaDate & "#, " & _
        "'" & leNom & "', " & _
        "'" & lePrenom & "', " & _
        PrixUnit & ")"
    
    Cn.Execute strSQL
    
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
End Sub
Mais plusieurs hic pour l'instant :
- Je dois rentrer les infos dans ma macro et non dans une cellule
- Les nouvelles valeur rentre bien dans mon fichier fermé, mais si je supprime une ligne antérieur l'écriture ne se repositionne pas au bon endroit.
En gros : J'écris sur les lignes 1,2,3,4,5,6 puis je supprime la 5 et 6. La macro va écrire en ligne 7 ensuite.

Prochaine étape :
- Pouvoir utiliser les cellules (ou formulaire) de mon fichier d'écriture pour ensuite jouer la macro et envoyer les données dans ma base.
- Vérifier si une valeur " KO " existe dans une plage de donnée de mon fichier base de données, si oui, ouverture du classeur.
- Supprimer des données, mais ça apparemment pas possible...tanpis sniff

En pièces jointe, les deux fichiers :
Ecriture_dans_la_base.xls
(43.5 Kio) Téléchargé 27 fois
Base_de_donnees.xls
(25.5 Kio) Téléchargé 26 fois
Je suis preneur de toute aide, remarque ou même solution.

Amicalement,
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message