IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Annale d'examen comment faire


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Annale d'examen comment faire
    Bonjour Bonjour a tous.

    je suis étudiante et bloque sur un probleme de programmation en Vba depuis quelques apres-midi. je voudrais bien savoir si il existe un moyen de faire ca




    j'ai des données boursiere, 3 tableaux( 4x2000 , 2x1869 et 2x1775 environs) indexer par des dates :
    prix taux strike
    exemple 01/03/2010 993,3 4,89 888




    je veut crée une fonction qui me crée un tableau contenant toute les information pour une date donnée (fusioner les 3 tableaux) manque de chance certaine date n'apparaisse que dans certain tableaux ( )

    Pour les dates qui n'apparaisse pas dans les 3 tableaux: les supprimé.


    -Dans un second temps (l'exercice commencre réelement ici mais je bloque sur la premier partie.... :'( )
    crée un programme qui permette de remplacer les valeurs manquante et je doit crée un programme qui permete a l'utilisateur de choisir comment les remplacer
    -par Zero
    -par la valeur précedente
    -par une moyenne des valeurs inferieur et superieur

    j'ai réussi a "matcher" les series sans crée de programme (avec les bouton excel) mais je souhaiterai avoir un programme vba

    c'est une annale d'examen.

    je demande beaucoup mais je n'ai aucune idée.
    cela m'aiderai beaucoup.

    merci d'avoir pris le temps de me lire-desoler si je me fait mal comprendre.
    merci a tout ceux qui peuvent m'aider !
    bonne apres-midi
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    Cela pourrait commencer ainsi
    (fusionner les 3 tableaux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub fusiontab()
    Dim cell As Range
    Dim date1 As Integer
    Dim date2 As Integer
     
    For Each cell In Feuil1.Range("a2:a" & Feuil1.Range("a65000").End(xlUp).Row)
        With Feuil1.Range("f:f")
            Set d1 = .Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
            If Not d1 Is Nothing Then date1 = d1.Row
        End With
        With Feuil1.Range("i:i")
            Set d2 = .Find(cell, LookIn:=xlValues, LookAt:=xlWhole)
            If Not d2 Is Nothing Then date2 = d2.Row
        End With
     
        If date1 <> 0 And date2 <> 0 Then
        lig = Feuil1.Range("m65000").End(xlUp).Row + 1
        Feuil1.Range("m" & lig) = Format((cell), "m/d/yyyy")
        Feuil1.Range("n" & lig) = Feuil1.Range("b" & cell.Row)
        Feuil1.Range("o" & lig) = Feuil1.Range("c" & cell.Row)
        Feuil1.Range("p" & lig) = Feuil1.Range("d" & cell.Row)
        Feuil1.Range("q" & lig) = Feuil1.Range("g" & cell.Row)
        Feuil1.Range("r" & lig) = Feuil1.Range("j" & cell.Row)
        End If
    Next cell
     
    End Sub
    remplacer les valeurs manquante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub remplacer()
        For Each cell In Feuil1.Range("p2:p" & Feuil1.Range("p65000").End(xlUp).Row)
            If cell = "" Then
            Z = 0
            vp = Cells(cell.Row - 1, 16)
            moy = (Cells(cell.Row, 14) + Cells(cell.Row, 15)) / 2
     
            Usfreponse.vp.Caption = vp
            Usfreponse.moy.Caption = moy
            Usfreponse.Show
     
                If Usfreponse.TextBox1.Value = "" Then
                Exit For
                Else
                Cells(cell.Row, 16) = Usfreponse.TextBox1.Value
                End If
           End If
        Next cell
    End Sub
    Pour le reste, consulter le classeur joint.
    Je vous laisse le soin de créer le bouton ou la macro qui declenchera l'activation de remplacer. Ceci n'est qu'une façon de faire parmi tant d'autre.
    J'ai essayé de faire simple.
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    super merci, je vais prendre le temps d'esseyer de comprendre en detaille mais merci beaucoup !!!!

    en faite , lorque je lance le code ou bien que j'ouvre ton fichier, les colones ne sont pas classé ie: 10yd et index price reste inchangé.


    (j'ai le message "une des ligne contient une référence externe cela proviens peut etre d'ici ?? )

  4. #4
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    les colonnes ne sont pas classé
    ??. Ce n'était pas demandé dans l'exercice.
    Quelle colonne classée et dans quel ordre. par Vba ou directement sur la feuille?. Les valeurs sont actuellement classée dans l'ordre chronologique.
    Pour trouver l'erreur, il faut aller dans le gestionnaire de nom de l'onglet formule.

  5. #5
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    C est de ma faute si tu n a pas compris je me suis surement mal exprimé.

    Il y a 3 tableaux, contenant des dates et certaines valeurs .

    Cependant certain tableaux contienne des dates que d'autres ne contiennes pas. Ainsi il faut supprimer les dates qui n'apparaisse pas dans les 3 tableaux

    Et que doit je faire dans l onglet formuiles?
    Merci de ton aide !!!merci

  6. #6
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Ainsi il faut supprimer les dates qui n'apparaisse pas dans les 3 tableaux
    Prends toi un siege, une boisson, et prends le temps d'analyser le nouveau tableau et tu verras que les lignes dont les dates ne sont pas commune aux 3 tableaux ont été enlevé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Et que doit je faire dans l onglet formules?
    Rien, sauf si tu ne veux plus ce message d'erreur à l'ouverture du fichier. Je t'indiquai simplement ou chercher.

  7. #7
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    pardonne moi car tu va me trouver stupide mais dans le tableau renvoyer par le code :

    j'ai par exemple pour la premiere date (25/06/2003 ) la valeur associer a "prix index" est celle du 15/03/2001

    ai je fait une mauvaise manip?


    je suis desoler que tu ai taper tout ce code et que je bloque sur ca, je tassure que je ne fait pas expres

    (en tout cas oui les valeurs qui n'apparaissent pas dans les 3 tableaux sont bien supprimé)

    ps: pour l'entré je doit faire une iputbox ??

  8. #8
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Effectivement, il y a un cheveu dans la soupe.
    Je corrige. Donc voici la correction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Private Sub fusiontab()
    Dim cell As Range
    Dim date1 As Integer
    Dim date2 As Integer
    Application.ScreenUpdating = False
    For Each cell In Feuil1.Range("a2:a" & Feuil1.Range("a65000").End(xlUp).Row)
        With Feuil1.Range("f:f")
            Set d1 = .Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole)
            If Not d1 Is Nothing Then date1 = d1.Row
        End With
        With Feuil1.Range("i:i")
            Set d2 = .Find(cell.Value, LookIn:=xlValues, LookAt:=xlWhole)
            If Not d2 Is Nothing Then date2 = d2.Row
        End With
     
        If date1 <> 0 And date2 <> 0 Then
        lig = Feuil1.Range("m65000").End(xlUp).Row + 1
        Feuil1.Range("m" & lig) = Format((cell), "m/d/yyyy")
        Feuil1.Range("n" & lig) = Feuil1.Range("b" & cell.Row)
        Feuil1.Range("o" & lig) = Feuil1.Range("c" & cell.Row)
        Feuil1.Range("p" & lig) = Feuil1.Range("d" & cell.Row)
        Feuil1.Range("q" & lig) = Feuil1.Range("g" & date1)
        Feuil1.Range("r" & lig) = Feuil1.Range("j" & date2)
        End If
    Next cell
    Application.ScreenUpdating = True
     
    End Sub

  9. #9
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut houuuuuuura super merci
    hey super, effectivement ca marche a merveille.
    je te remercie pour ton aide et ta patience


    en abusant pourrai tu m'aider pour crée le bouton qui declanche la macro??

  10. #10
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Sous excel-2007-2010 : Onglet devellopeur, Inserer, bouton de commande dans contrôle active X.
    Clic droit sur le bouton, propriété. Redéfinir (name) par le nom de la macro que le bouton doit déclencher - Fusiontab -

    Sous excel 2003 : clic droit dans le menu en haut pour afficher la barre d'outil Visual basic.
    Afficher la boite a outils controles, selectionner bouton de commande.
    Clic droit sur le bouton, propriété. Redéfinir (name) par le nom de la macro que le bouton doit déclencher - Fusiontab -
    Si tu as un souci, precise moi la version excel que tu utilise.

  11. #11
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Ok donc c'est la version 2010,

    Je souhaite utiliser userform1 que tu cree dans la preocedire " remplacer"
    Je suis tes indication puis dans la fenetre "proprétés" j'entre :-remplacer - en face de name.

    Il me repond " nom ambigu detecter: remplacer"

    :,(


    C est super tu programme depuis lontemps?

  12. #12
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    Bonjour
    La procedure existe déjà, il faut couper la procedure de l'ancienne emplacement pour la coller sur ton bouton.
    Clic droit sur le bouton, visualiser le code.

    Tu me parle de userform ?? J'ajoutais moi un bouton sur la feuille.

    Pour créer le bouton dans un userform, voir l'image jointe
    Images attachées Images attachées  

  13. #13
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Merci.
    Si j avait souhaiter que le usfreponse me replace "toute les valeur manquante" par le choix( 0 , precedente ,moyenne) de l utilisateur .
    Que doit je modifier dans le code?

    Merci pour la photo explicative

    Le message me renvoi " la valeur de a1 est nulle " ( quand j execute usfreponse)
    Or je vois bien que tu dit ( 2eme ligne de la fonction remplacer) colonne p .

    Pourquoi donc cherche il dans la colone a?

  14. #14
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    la valeur de a1 est nulle
    Cette label text n'est pas initialisé comme une variable, il ne faut donc pas s'occupé de ce quelle raconte.
    On peut en revanche la modifié pour qu'elle nous indique la cellule qui effectivement est vide.
    1-afficher les propriété du label qui nous interesse
    2-Vider le caption
    3- Ajouter une ligne comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub remplacer()
    Dim cell As Range
    Puis celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Usfreponse.moy.Caption = moy
            Usfreponse.Label1.Caption = "La valeur de la cellule P" & cell.Row & " est nulle , voulez vous la remplacer par :"
    La premiere ligne servant de repere

  15. #15
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Peut on modifier toutes les valeurs manquante d'un coup?

  16. #16
    Membre éprouvé Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Points : 973
    Points
    973
    Par défaut
    me remplace "toute les valeur manquante"
    Pas mal de modification a faire, je te laisse voir le fichier joint.
    J'ai fait le choix d'afficher un autre userform qui laisse à l'utilisateur la possibilité de valider la valeur de remplacement avant de tout changer.
    au fait :
    Anal d'examen est très different de annales d'examen.
    Fichiers attachés Fichiers attachés

  17. #17
    Candidat au Club
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mars 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    il me retourne un message d'erreur (ligne 19 pour valeur precedente) et ligne 20 pour moyenne)


    sinon je pense que ca marche,

    je vais rediger au propre je peut t'envoyer ce que j'ai fait si tu veut - avec les questions suivantes
    (mais sa va me prendre du temps haha)

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/06/2012, 12h06
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo