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 :

Macro sur Excel : programmation de boucles


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Paris 2
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris 2
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Macro sur Excel : programmation de boucles
    Bonjour à tous,

    Je voudrais réaliser qql chose sur excel via VBA mais mes connaissances en programmation sont limitées. Pouvez vous m'aider ?

    j'ai un tableau sur Excel où il y a plusieurs colonnes :
    S = numéro de facture
    T = type de mouvement
    U = montant facture
    V = numero client
    W = nom du client
    X = devise
    Y = rapport

    Mon objectif : lorsque je vais sur une nouvelle feuille ( feuill2) sur excel et que je tape l'un des montants de la colonne U ( montant facteur), la macro me donne automatiquement la ligne d'information de cette facture.
    Plus précisement, qd je tape le montant 500euros sur cette nouvelle feuille, j'aurais les les info des colonnes S à Y que de cette facture seulement.


    Est ce que quelqu'un peut m'aider s'il vous plaît ?


    Merci d'avance

  2. #2
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Bonjour,


    Pourquoi utiliser du VBA alors que tu peux faire cela simplement avec des RECHERCHEV appropriées ?

    par ailleurs, par rapport à tes montants, est-u sur que dans ta colonne U, tes valeurs soient uniques ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Une boucle n'est pas nécessairement la seule méthode.
    Tu pourrais faire un filtre sur la colonne U au montant que tu as choisi et copier la ou les lignes qui ont ce montant.
    L'utilisation de l'enregistreur de macro pourra t'aider à générer un code pour ça.
    MPi²

  4. #4
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    si tes montants de factures sont unique, une simple formule "=RECHERCHEV" suffit pas besoin de boucle.

    A+

    Ps : bon je me suis fait grillé par "illight" mais au moins si on a la même idée c'est qu'elle doit pas être si mauvaise

    PPS : Et Parmi aussi bonjour à tous deux
    Ils ne savaient pas que c'était impossible ... du coup ils l'ont fait (Mark Twain)

    n'oubliez pas de si les messages vous aide ou sont pertinents et de mettre quand cela est !

  5. #5
    Candidat au Club
    Homme Profil pro
    Paris 2
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris 2
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci de vos conseils mais ce n'est pas tout à fait ce que je veux faire
    voici la commande que j'ai tapé :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Public val_mt As Double
    Public compteur_ligne_nv_fen
     
    Sub Nouvelle_fenetre()
    '
    ' Nouvelle_fenetre Macro
    '
     
    '
     
     
        Dim Ftravail As Worksheet
        On Error Resume Next
        Set Ftravail = Sheets("Calcul")
     
        ' Application.DisplayAlerts = False
     
        ' Worksheets("Calcul").Delete
     
       '  Application.DisplayAlerts = True
     
        matrice = ThisWorkbook.Sheets(1).Range("S3:X1304")
     
        If Ftravail Is Nothing Then
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Calcul"
        End If
        '.Name = "Calcul"
        ThisWorkbook.Worksheets("Calcul").Range("D2").Value = "Compteur"
        compteur = ThisWorkbook.Worksheets("Calcul").Range("E2").Value + 1
     
        ThisWorkbook.Worksheets("Calcul").Range("E2").Value = compteur
        ThisWorkbook.Worksheets("Calcul").Range("A2").Value = "Montant de la facture :"
        ThisWorkbook.Worksheets("Calcul").Range("B2").Value = val_mt
     
     
    Dim O_Cell As Object
    Dim C_UI As Double
     
            C_UI = ThisWorkbook.Worksheets("Calcul").Range("B2").Value 'valeur à chercher
            Application.Goto Reference:=" matrice " ' "UI" est le nom de la zone de recherche
            Set O_Cell = Selection.Find(C_UI) ' recherche de la valeur
            If Not O_Cell Is Nothing Then 'si l'objet O_Cell contient les coordonnées de la cellule
                    MsgBox "J'ai trouvé"
                    O_Cell ' sélection de la cellule
     
    ' manque la commande qui dit que si la valeur exsiste alors prend la linge ( où il y a la valeur) de la colonne S à X
     
       ' Range ("Calcul")
     
       ' Range ("C_UI")
       ' Selection.Copy
       ' Sheets ("Feuil2")
        'Range("A4").Select
        'ActiveSheet.Paste
     
        Range("C_UI").Copy Destination:=Sheets("Calcul").Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1)
     
          ' Dim rep As Variant
     
    'rep = InputBox("Entrer la facture chercher")
    'Sheets.Add.Name = "Calcul"
    'With Worksheets("Calcul")
       ' .Range("A2") = "Formule"
       ' .Range("B2") = "Valeur"
       ' .Range("B3") = Application.Run("testelouis", 800, 1435, rep)
     
        '   End With
     
     
            End If
     
    End Sub

    mon objectif c'est de pouvoir rajouter deux choses:
    1) la sélection de la cellule qui correspond au montant que j'ai taper et copie colle les informations de la colonne S à X dans la feuille 2.
    2) si le montant taper existe plusieurs fois copie colle toutes les lignes des colonnes S à X dans la feuille 2.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    mon objectif c'est de pouvoir rajouter deux choses:
    1) la selectionne la cellule qui correspond au montant que j'ai taper et copie colle les informations de la colonne S à X dans la feuille 2.
    2) si le montant taper existe plusieurs fois copie colle toutes les lignes des collones S à X dans la feuille 2.
    J'en reviens encore à ma proposition (#3) de faire un filtre et de copier la sélection trouvée.

    PS: lorsque tu mets du code, utilise le bouton # pour formater celui-ci et le rendre plus facile à lire.
    MPi²

  7. #7
    Candidat au Club
    Homme Profil pro
    Paris 2
    Inscrit en
    Décembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris 2
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2014
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    depuis le début je me suis mal fait comprendre ... je vais donc re poser ma question si cela ne vous dérange pas :
    Voici les conditions de l’exercice :
    On a un tableau composé de la façon suivante :
    Colonne S : numero de la facture
    Type de mouvement : colonne T
    Montant facture : colonne U
    Numéro client : colonne V
    Nom client : colonne W
    Devises : colonne X

    Ce que je cherche à faire est :
    Créer un bouton où je tape le numéro d’une facture. Si, celle-ci existe alors il me copie colle la ligne ou les lignes d’information(s) (colonne S à X) qui lui sont associées dans une nouvelle page que je nomme « info ».

    Si cette information n’existe pas alors je veux créer une matrice avec toutes les valeurs inférieures à celle-ci.
    Par exemple : si ma facture est de 10.55 euros et que celle-ci n’existe pas alors je crée une matrice (non visible = caché) de nom « matricecache » ( de facon decroissante) avec toutes les valeurs en dessous comme 8.55, 5.54, 4.12 et 2.22.
    Une fois qu’on a trouvé les valeurs attaché à « matricecache » on fait une boucle aléatoire qui fait la somme des deux valeurs ou de trois valeurs pour arriver à retrouver la valeur initialement recherché.
    Exemple : si j’ai tapé dans la touche de recherche 10.55 (c’est la valeur que je cherche) et que celle-ci n’existe pas. Alors, je créer une matrice avec toutes les valeurs en dessous de 10.55. Puis je fais des sommes des aléatoires de ces valeurs pour arriver à trouver 10.55. Je peux sommer 2 valeurs ou 3 ou plus.

    voila

Discussions similaires

  1. [[VBA-E]je cherche une macro sur excel qui ouvre un fichier
    Par macromega dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2007, 10h25
  2. [VBA-E] aide pour macro sur excel
    Par letoulouzin31 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 24/05/2006, 12h29
  3. [VBA-E]Filtre via une macro sur Excel
    Par jamal.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2006, 16h35
  4. petite macro sur excel...
    Par manu13009 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 11h57
  5. Macro sur Excel/Boucle sur les lettres
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/11/2005, 12h56

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