Synthèse/transfert données colonnes vers autre classeur
Bonjour à tous.
Mon boss m'a donné une mission dans laquelle j'ai à automatiser la remonter d'information d'un fichier excel vers un autre (sachant que le premier fichier sera mis à jour tous les mois le but est de fournir le deuxième en VBA pour une compléte automatisation).
Je n'ai jamais fait de VBA avant, j'ai lu tous les cours disponibles sur ce site et ai déjà pas mal arpanté le forum pour trouver réponse à ma question.
Mon problème ici, est que je dois mixer plusieurs choses différentes (boucle, calculs etc.).
Je dois partir de zéro et n'ai pas la moindre idée de comment commencer, ce n'ai pas un manque de motivation de ma part mais j'aurai besoin d'un exemple, d'une piste à suivre pour pouvoir mettre tout ça en place.
Ici je n'arrive pas à combiner la fonction "If", le passage d'un classeur vers un autre et enfin la fonction somme sur le deuxième classeur.
Vous trouverez ci joints le premier classeur avec une question plus précise.
Merci d'avance pour vos réponses, cela me sera d'une grande aide pour pouvoir me lancer dans ce projet.
Bonjour et bienvenue sur le forum
Un essai. Te convient-il ?
Les 2 fichiers doivent être ouverts et au format ".xls"
Bonjour,
D'abord merci beaucoup d'avoir pris le temps de m'épauler sur ce problème!
Quelques petites questions cependant, car je ne comprend pas toutes les formules et j'aime bien comprendre quand je travaille sur quelque chose.
Je ne comprend pas ce qu'est la valeur Flag...
J'ai également du mal à assimilé la ligne : For Each C In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
En effet ce que j'ai donné n'est qu'un exemple (je ne pouvais pas donner le fichier sur lequel je travail réellement) j'ai donc nécessairement besoin de comprendre pour pouvoir exporter ça sur mon fichier.
Autre chose, il y a un léger problème que je n'arrive pas à résoudre concernant le total à avoir, en effet la somme devrait normalement être de 700 dans l'autre tableau (car deux lignes correspondent au "cahier des charges") or ici la somme affichée n'est que de 300...
Désolé de ne pas pouvoir régler ça tout seul mais je suis vraiment novice en la matière!
Merci encore.
Option Explicit
Dim Doc1, Doc2, D, Flag
Sub EtablirLaSomme()
Flag = 0
On Error GoTo OuvrirDoc
Set Doc2 = Workbooks("Export SAS 05-2014.xls").Sheets("Feuil1")
Flag = 1
Set Doc1 = Workbooks("Fichier excel restitution NEW DEAL.csv").Sheets("Feuil1")
Doc1.Cells(5, "F").Value = ""
Doc2.Activate
For Each D In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
If D.Value = "CPART" Then
Doc1.Cells(5, "F").Value = Doc1.Cells(5, "F").Value + D.Offset(0, 2).Value
End If
Next D
Doc1.Activate
Exit Sub
OuvrirDoc:
If Flag = 0 Then
MsgBox "Le fichier ''Classeur2'' doit être ouvert", 16
ElseIf Flag = 1 Then
MsgBox "Le fichier ''Classeur1'' doit être ouvert", 16
End If
End Sub
Voilà mon adaptation sur le fichier "normal", quand j'essaye d'activer la macro l'ordinateur me demande d'ouvrir le classeur2 et je n'arrive pas à régler ce problème..
Bonjour
Tu écris :
Je ne comprend pas ce qu'est la valeur Flag...
Flag est une variable que j’initie à 0 et qui me permet d’envoyer un message d’alerte différent selon que le classeur 1 ou le classeur 2 n’est pas ouvert.
J'ai également du mal à assimilé la ligne : For Each C In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
Cela veut dire que l’on va prendre chaque cellule de la sélection qui va de la cellule A2 à la première cellule où on arrive lorqu’on part de la dernière cellule du tableau en colonne A et que l’on fait : Ctrl + flèche vers le haut
il y a un léger problème que je n'arrive pas à résoudre concernant le total à avoir, en effet la somme devrait normalement être de 700
Désolé, dans l’exemple, il n’y a qu’une seule ligne qui remplit les 3 conditions :
• "DAT_PREAVIS_32_JOURS" en colonne A
• "CPART" en colonne B
• "assuré avec relation établie" en colonne C
C’est la ligne 4 pour laquelle on a 300 en colonne D
(je ne pouvais pas donner le fichier sur lequel je travail réellement)
Dommage ! Cela m’empêche de travailler dans les conditions réelles…
Bye !
Au temps pour moi,
C'est bon j'ai réussi en partant de ta formule à l'appliquer à mon cas,
Merci de ton aide,
Romain