Aide VBA excel

Résolu
meliani_82 Messages postés 6 Statut Membre -  
 Cam -
Bonjour,
Je suis nouveau en VBA Excel et j'ai un travail à faire. Je vous prie de me donner un coup de main SVP.
Je veux créer (en VBA EXCEL) un tableau avec 5 champs. Les 2 premiers champs je les rentres à la main mais les autres champs dependent des deux premiers que j'ai entré donc ils doivent s'afficher automatiqument.
Exemple: Champs 1 : Prix unitaires des boissons (coca, fanta...) ne change pas celui ci.
Champs 2 : Je rentre le nombre de boissons 2 coca, 3fanta... celui ci change.
Champs 3 : je veux qu'il m'affiche le prix total des boissons par catégorie (2coca :3 €; 5fanta; 10€....)
Les autres champs je veux les remplir seul, mais je veux que vous m'expliquiez la procédure pour les 3 premiers champs je veux apprendre comment faire.
Je connais pas grand chose en VBA excel je sais juste créer un macro.
Merci beaucoup

Cordialement
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. xvyr Messages postés 14 Statut Membre 1
     
    pour ta macro meliani_82 la reponse de irem marche mais je prefere cette syntaxe qui est plus simple (d'après moi)

    --------------------------------------------------------------------
    i = 2
    While Cells(1, i) <> ""

    'définition des variables
    nom_boisson = ""
    posa = Cells(1, i)
    posb = Cells(2, i)
    nbla = Len(posa)
    nblb = Len(posb)

    'récupération des valeurs
    prix_unitaire = Mid$(posa, nbla - 1, 1)
    nombre_de_boissons = Mid$(posb, 1, 1)

    'récupération du nom des boissons
    For boucle = 2 To nblb
    nom_boisson = nom_boisson & Mid$(posb, boucle, 1)
    Next boucle

    'affichage
    Cells(3, i) = nom_boisson & " : " & prix_unitaire * nombre_de_boissons & "€"

    'continue tant qu'il y a d'autres boissons
    i = i + 1
    Wend

    'xvyr - programmeur VBA
    'xvyr-du-78@hotmail.fr
    --------------------------------------------------------------------
    la syntaxe doit etre par exemple ->
    champ 1 : coca 3€
    champ2 : 3 coca
    champ 3 : rien
    on peut changer les champ 1 et 2. la marco s'occupe du champ 3
    1
  2. irem Messages postés 166 Statut Membre 99
     
    Désolé de répondre à votre question par une autre question mais je voudrais être sur de bien comprendre...

    Vous avez une chaine de caracteres donnant le prix du style
    "fanta 3€, coca 2€,..."
    Vous avez une seconde chaine de caracteres donnant
    "3coca, 2 fanta,..."
    et le résultat est une troisième chaine de caractères donnant
    "3 coca : 6€, 2 fanta : 6€"...

    est-ce bien cela?

    Irem
    0
    1. meliani_82 Messages postés 6 Statut Membre
       
      re,
      Désolé pour le retard, le but et de trouver une macro qui donne le total en troisiéme champs c'est exactement ce que tu as fait.
      Je voudrais le faire avec des macros car j'ai besoin de faire autres choses par la suite, je sais que c'est facile avec excel mais je veux le faire avec une macro.
      Le but est de faire une application pour mon stage mais je ne peux pas donner le nom des champs donc j'ai mis prix unitaire de la boison et le total.
      Merci pour me donner plus de details svp
      0
  3. sncf Messages postés 122 Statut Membre 14
     
    Bonsoir
    Quel est le but de ta macro car honnetement si c'est pour faire le total, une ercopie de formule devrait suffire.
    Il faut nous dire un peu plus sur le but final recherché
    0
  4. Utilisateur anonyme
     
    tout a fait d'accord. quel est le but de l'application?
    Et puis veux-tu utiliser un formulaire ou pas?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. irem Messages postés 166 Statut Membre 99
     
    je ferais comme suit :

    Sub test()
    MsgBox get_Somme("coca 2€;fanta 3€", "2 coca;5 fanta")
    End Sub

    Function get_Somme(str_valeurs As String, str_choix As String) As String
    'on parse les entrées pour faire le total
    'entrées : str_valeurs "coca 2€;fanta 3€;..."
    ' str_choix "3 coca; 2 fanta;..."
    'sortie : "coca : 6€;fanta 6€;...."
    Const Ct_Csv_Sep = ";" 'separateur du champ csv

    Dim Tab_Valeurs, Tab_Choix
    Dim My_Valeurs, My_Choix As String
    'on vire les espaces et les euros
    My_Valeurs = Replace(Trim(Replace(str_valeurs, "€", "")), ":", "")
    My_Choix = Replace(Trim(Replace(str_choix, "€", "")), ":", "")
    'on splitte l'entrée et les choix
    Tab_Valeurs = Split(My_Valeurs, Ct_Csv_Sep, -1, vbTextCompare)
    Tab_Choix = Split(My_Choix, Ct_Csv_Sep, -1, vbTextCompare)
    'on a ainsi deux tableaux avec les deux strings
    Dim My_Result, My_Entree, My_Boisson As String
    Dim My_Nombre, My_Prix As Integer
    Dim int_I, Int_J, Int_k As Integer
    For int_I = 0 To UBound(Tab_Choix)
    My_Entree = Tab_Choix(int_I)
    Int_k = InStr(1, My_Entree, " ", vbTextCompare)
    If Int_k > 1 Then
    My_Nombre = Left(My_Entree, Int_k - 1)
    My_Boisson = Right(My_Entree, Len(My_Entree) - Int_k)
    For Int_J = 0 To UBound(Tab_Valeurs)
    If InStr(1, Tab_Valeurs(Int_J), My_Boisson) Then
    'on est sur le bon prix
    Int_k = InStr(1, Tab_Valeurs(Int_J), " ", vbTextCompare)
    My_Result = My_Result & My_Nombre & " " & My_Boisson & _
    " : " & CStr(My_Nombre * Right(Tab_Valeurs(Int_J), Len(Tab_Valeurs(Int_J)) - Int_k)) & " €" & Ct_Csv_Sep

    End If
    Next Int_J
    End If
    Next int_I
    get_Somme = My_Result
    End Function

    Irem
    0
    1. percevalix
       
      slt j'ai vu ke tu a l'air de tater le VBA, peux tu donc m'aider stp, j'en ai deja fait mais j'ai oublié:
      j'ai calculer une valeur dans VBA, et je voudrais l'afficher ds une cellule cet valeur, peux tu me faire les lignes....ma valeur est un nombre , j'ai tout essayer je vais craquer!!!!
      peux tu me dire pour afficher un nombre et une chaine de caractere stp
      merci a bientot
      0
    2. percevalix
       
      pardon g pa precisez, je veux copier la valeur ds une cellule d'une feuille excel ( c pr ca je doit referencer la feuille et la cells et comment j'ai essayé worksheet(Feuil1).cells(1,1).value....etc aidez moi svp!!!!!!!!!!!!!!
      0
      1. xvyr Messages postés 14 Statut Membre 1 > percevalix
         
        bonjour
        par exemple ta valeur est "a" et tu veux la copier dans la cellule 1,1 de la feuille 1

        l'aide de VBA utilise ->
        Sheets("Feuil1").Select
        ActiveCell.FormulaR1C1 = a

        j'utilise ->
        Sheets("Feuil1").Select
        cells(1,1) = a

        la ligne sheets("feuil1") n'est utile que pour d'autre feuille, la feuille 1 étant séléctionné par defaut
        0
    3. meliani_82 Messages postés 6 Statut Membre
       
      re,
      Super tu assures beaucoup, merci encore
      a bientot
      0
  7. irem Messages postés 166 Statut Membre 99
     
    En fait tout dépend si tu veux une entrée par ligne ou si tu as directement la ligne complète des tarifs et la ligne complète des commandes (le prog de xvyr est bon dans le premier cas, le mien dans le second).

    Par ailleurs, pense à fermer le sujet

    Bonne journée

    Irem
    0
  8. oilman
     
    bonjour a rous
    je suis un peu nul en VBA et jaurais besoin daide.
    comment je pourrais faire pour atteindre l equation d une trendline et generer un msgbox qui dit si l ordonnee a l origine de ma trendline est positive ou negative ( trendline lineaire).
    demandez moi si jai pas ete clair.
    merci bcp d avance
    0
  9. Cam
     
    Bonjour à tous,
    je dois effectuer des projets en vba, mais je suis pas très douée, je dois réaliser un convertisseur de monnaies avec au moins 3 monnaies (dont l’euro) accessibles par une boîte combo avec possibilité de rajouter des nouvelles devises (par l’intermédiaire de la feuille excel).

    mais également un palindromisateur© avec comme contraintes
    Reconnaitre si la chaîne saisie est un palindrome
    Le programme doit pouvoir GENERER un palindrome.

    Merci beaucoup de votre aide
    0