IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

fichier de récap [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut fichier de récap
    Bonjour à tous,

    Voilà mon problème:
    J'ai un dossier modèle qui contient divers fichiers Office (modèle de courrier Word, Excel etc). Le document de travail est un fichier Excel. Je souhaite ajouter un joli bouton du genre "mise à jour" qui va envoyer certaines informations dans un autre classeur Excel "récap".
    Il faudrait qu'une ligne soit ajoutée pour chaque nouveau dossier et également que la macro prenne en compte l'existence d'un dossier existant pour mettre les infos à jour.

    Envoyer des donnes dans un autre fichier, je peux le faire mais j'avoue que l'intégralité des fonctions que je recherche est un peu en dehors de mes compétences en VBA.

    Comment puis-je m'y prendre ?

    En vous remerciant par avance de toutes vos suggestions.

    Cordialement,

    Fred

  2. #2
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut fichier de récap
    Hello,

    Bon voilà où j'en suis:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Sub MAJ()
    Dim Chemin As String
    Dim Chemin_complet As String
    Dim Fic As String
    Dim Cible As Workbook
    Dim Source As Workbook
    Dim i As Integer
     
    Chemin = "P:\SINISTRES"
    Fic = "Récapitulatif des sinistres.xlsm"
    Chemin_complet = Chemin & "\" & Fic
     
    Set Cible = Workbooks.Open(Chemin_complet)
    Set Source = ThisWorkbook
     
    i = i + 1
    For i = 2 To lastline
    Cible.Worksheets("Recap").Cells(1, i).Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Cells(2, i).Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Cells(3, i).Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Cells(4, i).Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Cells(5, i).Value = Source.Worksheets("Assurance").Range("M2").Value
    Next i
     
    Cible.Save
    Cible.Close
     
    End Sub
    Lorsque j'exécute cette macro, je n'ai pas d'erreur. En revanche, cela n'ajoute pas de ligne à mon fichier cible. J'imagine une mauvaise utilisation de la boucle for. Mon premier code était:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub MAJ()
    Dim Chemin As String
    Dim Chemin_complet As String
    Dim Fic As String
    Dim Cible As Workbook
    Dim Source As Workbook
    Dim i As Integer
     
    Chemin = "P:\SINISTRES"
    Fic = "Récapitulatif des sinistres.xlsm"
    Chemin_complet = Chemin & "\" & Fic
     
    Set Cible = Workbooks.Open(Chemin_complet)
    Set Source = ThisWorkbook
     
    Cible.Worksheets("Recap").Range("A2").Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Range("B2").Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Range("C2").Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Range("D2").Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Range("E2").Value = Source.Worksheets("Assurance").Range("M2").Value
     
    Cible.Save
    Cible.Close
     
    End Sub
    Celui fonctionne mais écrase à chaque fois la ligne existante.
    Qu'ai je mal fait ?

    Merci d'avance.

    Cordialement,

    Fred

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, il faudrait rajouter qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim LastRow As Long
     
        LastRow = Cible.Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Row
        Cible.Worksheets("Recap").Range("A" & LastRow + 1).Value = "....."
        Cible.Worksheets("Recap").Range("B" & LastRow + 1).Value = "....." etc ...
    à l'endroit idoine dans ton code.

    Sinon lire le tutoriel de Joël : Dernière ligne et la dernière colonne renseignées d'une feuille

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut fichier de récap
    Salut Kiki29,

    C'est nickel.

    Je te remercie.

    Cordialement,

    Fred

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut fichier de récap
    Bonjour,

    J'ai voulu ajouté la vérification d'une valeur pour mettre la ligne à jour si cette valeur existe, sinon, on ajoute une ligne au fichier.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Sub MAJ()
    Dim Chemin As String
    Dim Chemin_complet As String
    Dim Fic As String
    Dim Cible As Workbook
    Dim Source As Workbook
    Dim i As Integer
    Dim FirstRow As Long
    Dim LastRow As Long
    Dim Sini As String
     
    Dossier = Source.Worksheets("Les_faits").Range("A9").Value
    Chemin = "P:\SINISTRES"
    Fic = "Récapitulatif des sinistres.xlsm"
    Chemin_complet = Chemin & "\" & Fic
     
    ThisWorkbook.Save
    Set Cible = Workbooks.Open(Chemin_complet)
    Set Source = ThisWorkbook
     
    FirstRow = Cible.Worksheets("Recap").UsedRange.Cells(1).Row
    LastRow = Cible.Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Row
    For LastRow = LastRow To FirstRow Step -1
         With Cible.Cells(LastRow, Dossier)
            If Not IsError(.Value) Then
                        If .Value = Dossier Then
    Cible.Worksheets("Recap").Range("A" & LastRow + 1).Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Range("B" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Range("C" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Range("D" & LastRow + 1).Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Range("E" & LastRow + 1).Value = Source.Worksheets("Assurance").Range("M2").Value
                        Else
    LastRow = Cible.Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Row
    Cible.Worksheets("Recap").Range("A" & LastRow + 1).Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Range("B" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Range("C" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Range("D" & LastRow + 1).Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Range("E" & LastRow + 1).Value = Source.Worksheets("Assurance").Range("M2").Value
            End If
        End With
    Next Lrow
    Cible.Save
    Cible.Close
    ThisWorkbook.Close
    End Sub
    Je ne sais pas encore si le code fonctionne parce que j'ai une erreur à la ligne 40 "end with sans with". Pourtant j'ai bien mis un With à la ligne 24.

    Merci d'avance.

    Cordialement,

    Fred

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour, bonjour !

    Deux lignes If dans le code mais une seule ligne End If



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Février 2015
    Messages : 108
    Points : 78
    Points
    78
    Par défaut fichier de récap
    Salut,

    Voici le code qui ne me retourne aucune erreur, en revanche il n'implémente pas mon fichier récapitulatif. J'ai tendance à penser que la boucle if ne fait le job espéré ou plus vraisemblablement, j'ai mal codé tout ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub MAJ()
    Dim Chemin As String
    Dim Chemin_complet As String
    Dim Fic As String
    Dim Cible As Workbook
    Dim Source As Workbook
    Dim i As Integer
    Dim FirstRow As Long
    Dim LastRow As Long
    Dim Sini As String
     
     
    Chemin = "P:\SINISTRES"
    Fic = "Récapitulatif des sinistres.xlsm"
    Chemin_complet = Chemin & "\" & Fic
     
    ThisWorkbook.Save
    Set Cible = Workbooks.Open(Chemin_complet)
    Set Source = ThisWorkbook
    Dossier = Source.Worksheets("Les_faits").Range("A9").Value
     
    LastRow = Cible.Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Row
    With Cible.Worksheets("Recap").Cells(LastRow, "A")
    For i = 2 To LastRow
    If Cells(i, 1) = Dossier Then
    Cible.Worksheets("Recap").Range("A" & LastRow + 1).Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Range("B" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Range("C" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Range("D" & LastRow + 1).Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Range("E" & LastRow + 1).Value = Source.Worksheets("Assurance").Range("M2").Value
        Else
    LastRow = Cible.Worksheets("Recap").Range("A" & Rows.Count).End(xlUp).Row
    Cible.Worksheets("Recap").Range("A" & LastRow + 1).Value = Source.Worksheets("Les_faits").Range("A9").Value
    Cible.Worksheets("Recap").Range("B" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("A2").Value
    Cible.Worksheets("Recap").Range("C" & LastRow + 1).Value = Source.Worksheets("Résultat_enquête").Range("D2").Value
    Cible.Worksheets("Recap").Range("D" & LastRow + 1).Value = Source.Worksheets("Suivi_courrier").Range("E6").Value
    Cible.Worksheets("Recap").Range("E" & LastRow + 1).Value = Source.Worksheets("Assurance").Range("M2").Value
    End If
     
    Next i
    Cible.Save
    Cible.Close
    ThisWorkbook.Close
    End With
    End Sub
    D'un autre côté j'ai remarqué que quand j'utilise Cells, ça ne fonctionne pas comme espéré...
    Je suis ouvert à tous commentaires, critiques, suggestions etc...

    Cordialement,

    Fred

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  2. Créer une feuille récap de plusieurs fichiers excel
    Par babacool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/07/2006, 19h56
  3. Réponses: 5
    Dernier message: 20/08/2002, 18h01
  4. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo