programmation vba

alphonse16

XLDnaute Nouveau
Bonjour,

Je suis un nouveau membre débutant en vba. J'aurai besoin de votre aide pour pouvoir mener à bien une mission qui vient de m'être confiée.
En fait je dois récupérer en fonction d’un certain nombre de conditions les éléments du classeur créances et dettes fournisseurs pour les renseigner dans le classeur BFR 2010-2009.

Je voudrai dans un premier temps procéder à l’opération suivante :



1ère condition : prendre les comptes de la Colonne CPTC qui commencent par 401,404 ou 408

2ème condition : une fois ces comptes sélectionnés calculer la différence en fonction de la Colonne SENS (c'est-à-dire faire somme des débits (D)– somme des crédits(C) pour les dit comptes)



3ème condition : afficher dans le classeur BFR 2010-2009 au niveau de la cellule C8 la valeur de cette différence que pour des dates comptables (colonne DTCT) < ou =31/01/2010.
(C’est-à-dire qu’il faut récupérer les comptes qui commencent par 401, 404,408, que pour les dates inférieures ou égales (<ou=) au 31/01/2010 et ensuite calculer la somme des débits puis la somme des crédits et renseigner dans le classeur BFR à la ligne indiquée la différence entre débit et crédit).


Renseigner de même la ligne C18 mais pour des éléments dont la date comptable (Colonne DTCT) <= 29/02/2010.



Merci d’avance pour votre aide.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : programmation vba

Bonjour le fil, bonjour le forum,

Bienvenu dans le forum Alphonse.
Je rejoins Sophy et Gérard car sans fichier exemple en pièce jointe je doute que quelqu'un ne s'amuse à en recréer pour faire fonctionner les macros.
Puisque tu es nouveau je te recommande vivement de lire la Lien supprimé du forum qui t'indiquera tous les bons plans pour obtenir de l'aide rapidement.

Édition :

Ooops on s'est croisés Alphonse...
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : programmation vba

Bonjour le fil, bonjour le forum,

Alphonse je te propose la macro ci-dessous à placer dans le fichier créances et dettes fournisseurs.xls. Il faut que les deux fichiers soient ouverts pour que la macro fonctionne. Tu vérifieras les comptes car je ne l'ai pas fait...
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim cod As String 'déclare la variable cod (CODe CPTC)
Dim sc1 As Double, sc2 As Double 'déclare les variables sc1 et sc2 (Somme Crédits)
Dim sd1 As Double, sd2 As Double 'déclare les variables sd1 et sd2 (Somme Débits)
Dim dif1 As Double, dif2 As Double 'déclare les variables dif1 et dif2 (DIFférences débits - crédits)
 
'boucle sur toutes les cellules éditées cel de la colonne E
For Each cel In Range("E2:E" & Range("E65536").End(xlUp).Row)
    cod = CStr(Left(cel.Value, 3)) 'extrait les trois premiers caractères du compte CPTC
    Select Case cod 'agit en fonction du cod
        Case "401", "404", "408" 'cas "401", "404" et "408"
            'condition : si la date est inférieure ou égale au 31 janvier 2010
            If cel.Offset(0, 2).Value <= CDate("31/01/2010") Then
                'si la colonne "SENS" est un crédit, actualise la somme des crédits sc1
                If cel.Offset(0, -1).Value = "C" Then sc1 = sc1 + CDbl(cel.Offset(0, 3).Value)
                'si la colonne "SENS" est un débit, actualise la somme des débits sd1
                If cel.Offset(0, -1).Value = "D" Then sd1 = sd1 + CDbl(cel.Offset(0, 3).Value)
            End If 'fin de la condition
            'condition : si la date est inférieure ou égale au 28/02/2010 janvier 2010
            If cel.Offset(0, 2).Value <= "28/02/2010" Then
                'si la colonne "SENS" est un crédit, actualise la somme des crédits sc2
                If cel.Offset(0, -1).Value = "C" Then sc2 = sc2 + CDbl(cel.Offset(0, 3).Value)
                'si la colonne "SENS" est un débit, actualise la somme des débits sd2
                If cel.Offset(0, -1).Value = "D" Then sd2 = sd2 + CDbl(cel.Offset(0, 3).Value)
            End If 'fin de la condition
    End Select 'fin de l'action en fonction de...
Next cel 'prochaine cellule de cel de la boucle
dif1 = sd1 - sc1: dif2 = sd2 - sc2 'définit les variables dif1 et dif2
'place les valeurs dans le classeur
Workbooks("BFR 202010-2009.xls").Sheets("Feuil1").Range("C8").Value = dif1
Workbooks("BFR 202010-2009.xls").Sheets("Feuil1").Range("C18").Value = dif2
End Sub
 

alphonse16

XLDnaute Nouveau
Re : programmation vba

Bonjour à tous !
Merci encore pour ton aide Robert !
Je fais encore face à un petit problème. j'ai (à l'aide du code que tu m'as passé) pu completer la colonne CTP dans mon classeur BFR (en ce qui concerne l'année 2010 ).
je dispose d'un classeur par société donc 6 au total et je souhaiterai appliquer le même code à chacune des sociétés pour obtenir le résultat dans la cellule correspondante (soit dans la cellule L8 pour la société TI en janvier 2010, L18 en février 2010 et ainsi de suite).
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : programmation vba

Bonjour le fil, Alphonse, bonjour le forum,

Alohonse si je prends du temps à commenter le code c'est pour permettre aux utilisateurs de le comprendre et donc de le modifier. Il eut été sympa que tu y jette au moins un coup d'oeil et tu aurais eu, je pense, la réponse tout seul. Il suffit en effet de modifier les deux dernières lignes du code:
Code:
Workbooks("[COLOR=red]BFR 202010-2009.xls[/COLOR]").Sheets("Feuil1").Range("[COLOR=red]C8[/COLOR]").Value = dif1
Workbooks("[COLOR=red]BFR 202010-2009.xls[/COLOR]").Sheets("Feuil1").Range("[COLOR=red]C18[/COLOR]").Value = dif2
en remplaçant le nom du classeur et l'adresse des cellule...
 

alphonse16

XLDnaute Nouveau
Re : programmation vba

non en fait c'est le classeur à partir duquel je vais chercher les données qui change pas le classeur de réception. les lignes:
Workbooks("BFR 202010-2009.xls").Sheets("Feuil1").Range("C8").Value = dif1
Workbooks("BFR 202010-2009.xls").Sheets("Feuil1").Range("C18").Value = dif2
sont utilisées pour recevoir le fichier
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : programmation vba

Bonjour le fil, Alphonse, bonjour le forum,

Sans classeur je ne peux rien faire... Mais si tu veux progresser en VBA je te conseille plutôt d'essayer d'adapter toi-même le code et revenir que si tu n'y arrives pas.
 

alphonse16

XLDnaute Nouveau
Re : programmation vba

en fait c'est comme si tu avais le fichier creances et dettes fournisseurs plusieurs fois (6 fois en l'occurence pour chacune des sociétés) et que pour disons 3 des classeurs tu as les données qui portent sur 3 feuilles (car la capacité de reception de la feuille est dépassée) et que je souhaite appliqué le même code.
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 836
Membres
104 677
dernier inscrit
soufiane12