[VB6 -> VBA]gestion du codes avec vba [Résolu]

- - Dernière réponse :  EnguerrandP - 17 mai 2013 à 22:13
Bonjour
Je voudrait savoir si il est possible de mettre du code dans un classeur excel sans avoir a le taper je vous explique mon probléme :
J'ai un classeur excel qui me permet de passer des commande. Aprés chaque commande (exemple une commande chez gege il faut qu'un double de celle-ci se range dans un dossier historique -> Année
-> classeur excel qui s'appelle gege Année.
et que se classeur calcule la somme commander pour chaque produit. MAIS sans que lors de la création du fichier je dus taper le codes pour faire c'est calcule.
Afficher la suite 

Votre réponse

20/21 réponses

Meilleure réponse
3
Merci
bonjour je tient a faire une petite présision sur la boite d'oeuf vide.

j'ai écrit:
-> classeur excel qui s'appelle gege Année.
et que se classeur calcule la somme commander pour chaque produit(durant l'année). MAIS sans que lors de la création du fichier je dus taper le codes pour faire c'est calcule.


Il me répond:
Tu fais simplement la somme d'une colonne en l'inscrivant dans une cellule;
Tu fais simplement la somme d'une colonne en l'inscrivant dans une cellule;


voila un exemple type:
Amandes 50 Kg
Cannelle 20 Kg
Pistache 25 Kg

metton que je fais 6 commande dans l'année.
Avec la solution que l'on ma fournit
je n'aurait que le poid total de tout les produit confondue est non la somme à l'année de mes produit voila pourquoi j'ai re-poster un message casimment identique.

Ensuite je croit maintenant que se que je voulait faire a la base n'ai pas réalisable.
je voulait que lorsque l'on crée un nouveau classeur avec la fonction archivage il implante le code néssaicere pour regarder la liste des produit est faire la somme de chaque produit acheter jusque la durant l'année.

Maintenant je pense passer par un classeur consomation qui va lire l'historique est faire la somme des produit acheter pour chaque fournisseur.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de EnguerrandP
0
Merci
Bonjour,
Tu fais simplement la somme d'une colonne en l'inscrivant dans une cellule;
Quelque chose du genre:
Range("C3").value= Application.WorksheetFunction.Sum(Range("A:A"))


Il met la somme des valeurs de toute la colonne A dans la cellule C3

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour
Je voudrait savoir si il est possible de mettre du code dans un classeur excel sans avoir a le taper je vous explique mon probléme :
J'ai un classeur excel qui me permet de passer des commande. Aprés chaque commande (exemple une commande chez gege il faut qu'un double de celle-ci se range dans un dossier historique -> Année
-> classeur excel qui s'appelle gege Année.
et que se classeur calcule la somme commander pour chaque produit(durant l'année). MAIS sans que lors de la création du fichier je dus taper le codes pour faire c'est calcule.
Commenter la réponse de EnguerrandP
0
Merci
Bonjour,
Tu fais simplement la somme d'une colonne en l'inscrivant dans une cellule;
Quelque chose du genre:
Code Visual Basic :
Range("C3").value= Application.WorksheetFunction.Sum(Range("A:A"))

Il met la somme des valeurs de toute la colonne A dans la cellule C3



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
73
0
Merci
Y-a de l'écho, ici.
Va falloir insonoriser !
Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Va falloir commander des boites d’œufs vides chez gégé


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
Amandes 50 Kg
Cannelle 20 Kg
Pistache 25 Kg

Dans ton exemple je vois uniquement le poids, aucun élément quantitatif...

Ou peut-être que tu veux compter le nombre de produits (3 dans ton exemple) ???

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
Re bonjour ,
Il est vrai que j'aurait du précisé que je suis en stage dans une entreprise qui travaille dans l'agro-alimentaire, donc lors que l'on parle d'une quantité de produit on parle de Kg (fruit sec et autre) ,de barils (huile de colza , pâte de noisette),carton (pour les étiquette).
Commenter la réponse de EnguerrandP
0
Merci
Ça nous dit toujours pas ce que tu veux compter...
Tu ne peux mélanger des kilos avec des barils, soit tu comptes le tout en kilos soit en nombre de caisses barils etc.

Tu peux toujours ajouter le poids en suite ex:
1 caisse de dattes 20 Kg
1 baril d’huile 5 L


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
Voilà pourquoi les commerçants parlent en général :
- de définition de l'"unité" (qui peut être ce que l'on veut : poids, volume, nombre, etc ...)
- du prix de l'"unité"
et
- du nombre d'unités concernées par un achat ou vente
On a d'abord affaire là à un problème de conception

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
0
Merci
Bonjour ,

Ça nous dit toujours pas ce que tu veux compter...
Tu ne peux mélanger des kilos avec des barils, soit tu comptes le tout en kilos soit en nombre de caisses barils etc.


En effet je peut pas compter des kilos avec des barils sa reviendrait a calculer des amandes avec de la pâte de noisette mes comme je veut calculer le total commande pour chaque produit , l'unité ne me gène pas .
Commenter la réponse de EnguerrandP
0
Merci
Dans la cellule;
- A1 tu mets "Oranges"
- B1 = "12"
- C1 = "Kg"
- A2 = "Huile"
- B2 = "23"
- C2 = "Litres"
- A3 = "Oranges"
- B3 = "8"
- C3 = "Kg"
- A4 = "Huile"
- B4 = "10"
- C4 = "Litres"
en suite tu exécutes ce code:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim Found As Boolean
Dim Str As String
Dim Produit() As String
Dim Qté() As Integer
Dim Unité() As String
ReDim Produit(0)
ReDim Qté(0)
ReDim Unité(0)

For i = 1 To ActiveWorkbook.Sheets(1).UsedRange.Rows.Count
   Found = False
   Str = Cells(i, 1).Text
   For a = 0 To UBound(Produit)
      If Str = Produit(a) Then
         Qté(a) = Qté(a) + Val(Cells(i, 2).Value)
         Unité(a) = Cells(i, 3).Text
         Found = True
      End If
   Next
   If Found = False Then
      ReDim Preserve Produit(UBound(Produit) + 1)
      ReDim Preserve Qté(UBound(Qté) + 1)
      ReDim Preserve Unité(UBound(Unité) + 1)
      Produit(UBound(Produit)) = Str
      Qté(UBound(Qté)) = Cells(i, 2).Value
      Unité(UBound(Unité)) = Cells(i, 3).Text
   End If
Next

For a = 1 To UBound(Produit)
   MsgBox Produit(a) & " = " & Qté(a) & " " & Unité(a)
Next
End Sub


En suite tu reviens ici et tu m'expliques ce que t'as compris de tout ça.


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
J'ai oublié de déclarer 'a'

Dim a, i As Integer


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour ,
J'espére que votre week-end c'est bien passer.

En suite tu reviens ici et tu m'expliques ce que t'as compris de tout ça.


Je vient de tester le code que tu a poster acive,
(je te remercie pour celui-ci )et voir se qu'il fait et comment.
J'ai pas tout compris même avec l'aide en ligne.

-Les premiere ligne il n'y a aucun soucis tu déclare tes variable et tu met a zero la valeur de tes tableau :
Dim i As Integer
Dim Found As Boolean
Dim Str As String
Dim Produit() As String
Dim Qté() As Integer
Dim Unité() As String
ReDim Produit(0)
ReDim Qté(0)
ReDim Unité(0)



-Alors ensuite :
   Found = False
   Str = Cells(i, 1).Text
   For a = 0 To UBound(Produit)
      If Str = Produit(a) Then
         Qté(a) = Qté(a) + Val(Cells(i, 2).Value)
         Unité(a) = Cells(i, 3).Text
         Found = True
      End If
   Next

Tu mes la variable boolean à 'false' en début de la 1er boucle 'for' et si tu fini la boucle 'if' tu met "Found" a 'true' .
ensuit tu donne à la variable "Str" la valeur de A1.
Mais la le :
For a=0 to UBound(Produit)

je n'ai pas trop bien compris se que sa fesait
se que j'ai compris c'est que pour a = 0 tu donne la plus grande valeur de a à Produit.
ensuite la boucles if :
si Str égal à Produit(a) alors tu donne à Qté(a) la valeur de la céllule qui lui correspond et tu fait la même chose avec Unité(a).

-Aprés :
   If Found = False Then
      ReDim Preserve Produit(UBound(Produit) + 1)
      ReDim Preserve Qté(UBound(Qté) + 1)
      ReDim Preserve Unité(UBound(Unité) + 1)
      Produit(UBound(Produit)) = Str
      Qté(UBound(Qté)) = Cells(i, 2).Value
      Unité(UBound(Unité)) = Cells(i, 3).Text
   End If

La si "Found" est égal à zero tu redimensionne les tableau en gardent leur donné en l'ait incrémentent de 1 .

-Enfin :
For a = 1 To UBound(Produit)
   MsgBox Produit(a) & " = " & Qté(a) & " " & Unité(a)
Next

Tu fait apparaitre qui te donne le résultat produit par produit.
Commenter la réponse de EnguerrandP
0
Merci
Bonjour ,
Je c'est que sa n'a rien à voir avec le sujet.
Mais je trouve que c'est dommage qu'il n'y est pas sur ce site une partit ou les débutant(e)s qui veulent progresser pourrer poser une question qui n'est pas directement en lien avec le code:
par exemple :
Poser une question sur l'éxistance d'une fonction
car même avec l'aide en ligne on peut passer a coter, ou comment organiser une action car de temps en temps c'est pas la partie code qui peut poser probléme mes l'architecture.

Cars je sais que je pose trops souvent des question qui n'on rien a faire sur le forum ,
et je m'en excuse mais je ne c'est simplement pas a qui m'adresser pour pouvoir avancer voila,
alors je remercie tout(e)s ce qui m'aide si généreusement.
Commenter la réponse de EnguerrandP
0
Merci
Bonjour,

For a=0 to UBound(Produit)

Ubound = Retourne le plus grand indice disponible pour la dimension indiquée d'un tableau le contraire de LBound

Le "U" dans UBound signifie "Upper" et "L" = "Lower"
On peux également imaginer:
For a= LBound(produit) to UBound(Produit)


Vois-tu?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonjour ,
Compris , sa te permet de te déplacer a une extrémiter du tableau ciblé.

merci pour ta réponce sa ma permit de mieux comprende la réponce de l'aide en ligne.
Commenter la réponse de EnguerrandP
0
Merci
Bonjour ,
Voila mon probléme :
J'ai un classeur "Historique" puis j'ai X classeur pour mes fournisseur(un par fournisseur), dans chaque classeur fournisseur il y a un nombre X feuille qui corresponde à mes commandes.
Il faudrait que lorsque je suis sur mon classeur "Historique" que j'ai sélectionner un fournisseur dans une liste et que j'appuis sur un bouton ,mon programme regarde dans le classeur correspondant au fournisseur et calcule la somme commander pour le classeur entier de chaque produit.( la somme se fait par produit se n'ai pas une somme total de tout les produit que je doit faire , et l'uniter de mesure n'ai pas un probléme .)

Es que c'est possible ?
Commenter la réponse de EnguerrandP
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
16
0
Merci
Bonjour,

Dans un onglet de ton classeur Historique, tu peux mettre le nom de chaque fournisseur et le nom de son ou ses classeurs ou encore le chemin de son répertoire.

Déjà, ça simplifie la recherche du fichier...

Ensuite, tu balaies toutes les feuilles du classeur (For each feuille in LeClasseur...)

Pour ce qui est des quantités, il y a plusieurs possibilités... Ça dépend un peu comment le classeur est monté, la quantité de données à lire, etc...

Tu peux tout copier dans un onglet vidé de ton historique, ensuite faire un filtre avancé sans doublons sur les codes de produits et faire un SOMME.SI pour trouver les quantités.

Tu peux aussi accumuler les quantités et produits dans un tableau au fur et à mesure que tu lis chaque feuille du classeur fournisseur en vérifiant si le produit est déjà dans le tableau.

Et sûrement d'autres possibilités...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.