Mettre a jour et completer un classeur VBA EXCEL

ney_ney25 Messages postés 9 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Cette demande est dédiées a toutes âmes charitable !

N'ayant jamais eu l'occasion de travailler sur le langage VBA, j'ai malgré tout, tenté d'essayé de comprendre mais je dois avoué que les macros et moi maintenant ça n'est pas vraiment une histoire d'amour.. :p n tant qu'apprenti on ma demandé de faire une macro qui permettrait de mettre a jour un fichier xlsm en local via un autre fichier excel qui, lui , est exporté depuis une base de donnée mais également de rajouter les nouvelles lignes à la suite dans mon fichier en local.

Je m'explique, mon fichier en local contient des "tickets incidents" qui datent d'il y a plusieurs mois. Et tous les lundi je dois :

1) faire un export de la base de donnée
2) rajouter à la suite de mon fichier en local ( à partir de la première ligne vierge) les nouveau ticket qui ont été créés la semaine précédente
3) mettre ajour les autres tickets si des informations ont été modifiées ( ex : si un ticket passe d'un état "en cours" à un état "clos" )

les étapes 2 et 3 seraient les fonctions que devrait faire ma macro ..

J'avais pensé de prendre le numéro d'id existant pour chaque ticket comme référence pour comparer etc ..

J'espère avoir été assez clair sinon n'hésité pas :)

merci d'avance vraiment à tous ceux qui prendront le temps de me répondre ! je compte un peu beaucoup sur votre aide ...

voila un "debut " pas forcement juste de la macro présente sur mon fichier en local ..

Option Explicit

Sub Comparaison()

'Evite de voir les opérations intermédiaire sur les fichiers
Application.ScreenUpdating = False
'déclarations des variables
Dim i As Integer
Dim j As Integer
Dim Trouve As Integer
Dim nom_fichier As String
Dim chemin_fichier As String

i = 2 'initialisation du compteur à 2 car la ligne 1 contient l'en-tête de chaque donnée
chemin_fichier = "C:\Users\MOHA\Desktop\macro\"
nom_fichier = "export.xlsm"
Workbooks.Open chemin_fichier & nom_fichier

While (Workbooks("local.xlsm").Sheets("Feuil1").Cells(i, 1).Value <> "") 'tant que dans le fichier local la cellule en (ligne i, colonne A) n'est pas vide
j = 2
Trouve = 0 'cette variable sert d'indicateur si c'est à 0 on a rien trouvé ou 1 on a trouvé la cellule correspondante

While (Workbooks("export.xlsm").Sheets("Feuil1").Cells(j, 1).Value <> "") And (Trouve = 0)

'si la cellule du fichier export correspond à celle de local alors
If (Workbooks("export.xlsm").Sheets("Feuil1").Cells(j, 1).Value = _
Workbooks("local.xlsm").Sheets("Feuil1").Cells(i, 1).Value) Then
Trouve = 1

'On passe à la ligne suivante de export

j = j + 1

Else

'On copie le contenu à la ligne actuelle dans une nouvelle ligne

End If
Wend

i = i + 1
Wend

End Sub

Merci d'avanceeeeeeeeeeeeeeeeeee :)

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Au lieu de parcourir le fichier export, je ferai plutot une copie de l'onglet feuil1 dans local.xlm, pour eviter les aller/retour classeurs

        'recherche onglet export et suppression
    For Each wh In Worksheets
    If wh.Name = "export" Then
    Application.DisplayAlerts = False
    Sheets("export").Delete
    Application.DisplayAlerts = True
    Exit For
    End If
    Next
    chemin_fichier = "C:\Users\MOHA\Desktop\macro\"
    nom_fichier = "export.xlsm"
    Workbooks.Open chemin_fichier & nom_fichier
    Sheets("Feuil1").Copy Before:=Workbooks("local.xlsm").Sheets(1)
    ActiveSheet.Name = "Export"
    Windows(nom_fichier).Activate
    ActiveWorkbook.Close False


    question:

    Peut-il y avoir de nouveaux tickets ouverts dans export avant le dernier inscrit dans local ?????

    A+
    0
    1. ney_ney25 Messages postés 9 Statut Membre
       
      Salut f894009,

      je voudrais tout d'abord te remercier pour m'avoir répondu aussi rapidement, t'assure vraiment :)

      je voudrais s'il te plait si possible que tu m'explique un peu ton code car j'ai pas tous compris, pour pas dire rien ... je suis vraiment débutant en vba .. ton code permettrait le copier-coller des nouveau ticket à la suite de mon fichier en local ainsi que la mise a jour des tickets existant ?

      J'ai vu qu'il y avait une suppression ??

      et je n'ai pas vraiment compris ta question .. peut tu m'eclairer STP :)))

      merci d'avance et merci encore pour ta réponse !

      A+
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    le code que j'ai ecrit permet de:
    _ supprimer l'onglet export du fichier local.xlsm s'il est present
    _ copier l'onglet feuil1 du fichier export.xlsm dans le fichier local.xlsm et de le nommer export ceci afin de faciliter la suite de la programmation

    Peut-il y avoir de nouveaux tickets ouverts dans export avant le dernier inscrit dans local ????? Dans le fichier local.xlsm onglet feuil1, si vous avez deja des tickets enregistres, est-ce que dans le fichier export.xlsm suivant, il y aura des tickets enregitres avant le dernier de l'onglet feuil1 de local.xlsm

    ou

    comment sont enregistres les tickets dans la feuil1 de export, par chronologie de date ou par chronologie des tickets (qui peut etre la meme que les dates) ou portnawak
    0
    1. ney_ney25 Messages postés 9 Statut Membre
       
      Re,

      beh ecoute je ne pense pas que ton code soit approprié car le fichier que je vais exporter va contenir également des ticket que j'ai deja dans mon fichier en local donc il y aura des doublons .. et on ne saura pas quelle tickets est le bon si des champs on été modifier ..

      comprend tu ?
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      l'onglet export ne servira qu'a faire la recherche des tickets nouveaux a transferer et a la mise a jour des status des tickets, il pourra meme etre supprimer en fin de traitement. L'objet de cette manip, c'est de n'avoir qu'un seul fichier a tester, rien a voir avec ce que vous avez ecrit sur ce sujet
      0
    3. ney_ney25 Messages postés 9 Statut Membre
       
      re,

      je teste donc ton code de suite et je te tiens au courant

      mercii beaucoup
      0
    4. ney_ney25 Messages postés 9 Statut Membre
       
      dois-je supprime mon code et copier le tiens ?
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      et pour la suite ?????? reponse a ma question sur

      Peut-il y avoir de nouveaux tickets ouverts dans export avant le dernier inscrit dans local ?????

      parce que le code n'est pas inclu pour l'instant
      0