[VB6 -> VBA]gestion du codes avec vba

Résolu
EnguerrandP - 3 mai 2013 à 16:38
 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.

21 réponses

EnguerrandP
10 mai 2013 à 17:14
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.
3
Utilisateur anonyme
3 mai 2013 à 16:46
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
0
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.
0
Utilisateur anonyme
3 mai 2013 à 16:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 mai 2013 à 19:30
Y-a de l'écho, ici.
Va falloir insonoriser !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 mai 2013 à 19:57
________________________
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.
0
Utilisateur anonyme
4 mai 2013 à 00:37
Va falloir commander des boites d’œufs vides chez gégé


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
10 mai 2013 à 18:52
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
0
EnguerrandP
10 mai 2013 à 19:23
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).
0
Utilisateur anonyme
10 mai 2013 à 19:41
Ç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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
10 mai 2013 à 20:35
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.
0
EnguerrandP
11 mai 2013 à 10:26
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 .
0
Utilisateur anonyme
11 mai 2013 à 18:12
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
0
Utilisateur anonyme
11 mai 2013 à 18:19
J'ai oublié de déclarer 'a'

Dim a, i As Integer


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
EnguerrandP
13 mai 2013 à 09:49
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.
0
EnguerrandP
13 mai 2013 à 10:04
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.
0
Utilisateur anonyme
13 mai 2013 à 13:35
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
0
EnguerrandP
13 mai 2013 à 13:50
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.
0
EnguerrandP
16 mai 2013 à 17:31
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 ?
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
17 mai 2013 à 21:13
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
0
Rejoignez-nous