(EXCEL) aide pour une petite macro sympa pour faire de la comparaison
Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

(EXCEL) aide pour une petite macro sympa pour faire de la comparaison



  1. #1
    antoinecaud

    (EXCEL) aide pour une petite macro sympa pour faire de la comparaison


    ------

    Bonjour,

    Je sais que ce problème est vu et revu, mais étant débutant en VBA, je ne parviens pas à adapter les macros des uns et des autres à mon cas.

    Je m'explique :
    J'ai un tableau (feuille 1) remplit d'infos, dont une colonne intitulé "référence"
    J'ai un deuxième tableau (sur une deuxième feuille du même fichier) contenant aussi des infos diverses et contenant également la colonne "référence"

    Mon but ici est de créer une macro, permettant pour chaque référence de la feuille 1, aller chercher dans la feuille 2, la ligne portant la même référence.
    Puis de copier une colonne X de cette feuille 2 (de la ligne similaire en terme de référence) et de la coller dans une colonne vide (ou non) de la feuille 1

    Je remercie d'avance l'(les) âme(s) charitable qui auront le coeur et la force de me venir en aide

    Cordialment

    -----

  2. #2
    Loupsio

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Un petit exemple de tes données serait pratique

  3. #3
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    EXCEL AIDe.jpg

    voici la feuille 1, la colonne N ("n° ordre"), est présente aussi dans la feuille 2, colonne A,
    Mon souhait serait : pour chaque correspondance entre ces deux même colonnes, je voudrais copier la colonne D (valeur cible) de la feuille 2, dans la colonne P (poste de travail) de la feuille 1.

    AIDE 2.jpg


    Merci beaucoup de votre réponse !

  4. #4
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Bonjour
    Si tu tiens vraiment à le faire en VBA (ce serait nettement plus rapide avec RECHERCHEV), voici l'algorithme
    (si tu avais donné le code déjà écrit, on t'aurait aidé à le mettre au point) :


    Code:
    Activer Feuil2
    compter le nombre de cellules de la colonne références et stocker ce nombre dans la variable nb_cell
    activer Feuil1
    se placer dans la 1ère cellule de la colonne X
    écrire une boucle for de 1 à nb_cell
              dans cette boucle, mettre un test if comparant la valeur référence de Feuil1 à la valeur référence de Feuil2
                   si la valeur est identique, copie dans la cellule actuellement sélectionnée
             fin du test if
            sélection de la cellule suivante
    fin de la boucle for
    On n'est pas obligé de se déplacer dans chaque cellule de la colonne X. Ce serait même nettement plus rapide sans cela, mais le déplacement facilite de deboguage.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  5. A voir en vidéo sur Futura
  6. #5
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Cela marche aussi si les références ne sont pas dans le même ordre entre la feuille 1 et la feuille 2 ?

  7. #6
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    En faite je n'ai aucun code de base, je pars de rien, je ne connais pas vraiment le langage VBA..
    Merci pour vos réponses !

  8. #7
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    En faite je n'ai aucun code de base, je pars de rien, je ne connais pas vraiment le langage VBA..
    Merci pour vos réponses !

  9. #8
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Citation Envoyé par antoinecaud Voir le message
    Cela marche aussi si les références ne sont pas dans le même ordre entre la feuille 1 et la feuille 2 ?
    Oui si le décalage est constant. Si ce n'est pas le cas, pour chaque pas de la boucle, il faudra d'abord rechercher le n° de ligne à tester dans Feuil2.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  10. #9
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    D'accord merci !

    Saurait-tu où je peux avoir de la doc sur le language VBA ?
    Actuellement je ne sais pas retranscrire ton code explicite en code VBA..

  11. #10
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Citation Envoyé par antoinecaud Voir le message
    En faite je n'ai aucun code de base, je pars de rien, je ne connais pas vraiment le langage VBA..
    Merci pour vos réponses !
    si tu as déjà programmé avec un autre langage, use et abuse de la fonctionnalité enregistrer une macro et exécute pas à pas le code enregistré pour comprendre comment ça marche.
    Si tu n'as jamais programmé, commence par lire un cours. Tu n'es pas obligé d'avaler un pavé.
    Il faut comprendre la notion de procédure ou de routine, SUB en VBA ;
    Comprendre et utiliser les variables simples (une seule valeur stockée) et tableaux à une seule colonne et de longueur prédéfinie (array) ;
    comprendre les tests IF
    comprendre les boucles FOR
    A partir de là, tu pourras écrire des macros très simples et les compléter en copiant-collant du code enregistré.
    Ce n'est absolument pas orthodoxe comme méthode d'apprentissage et je vais probablement me faire incendier pour avoir écrit cela. Ca s'adresse à des personnes pressées et allergiques aux formations longues qui ne cherchent pas à devenir des pros de la programmation mais qui veulent régler en VBA des problèmes de gestion de données.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  12. #11
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Citation Envoyé par antoinecaud Voir le message
    Saurait-tu où je peux avoir de la doc sur le language VBA ?
    un exemple pour commencer : http://cherbe.free.fr/VBA5_1999.html
    Dernière modification par cherbe ; 02/12/2016 à 10h11.
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  13. #12
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    merci je vais essayé tout ça dès maintenant ! je vous posterais mon code pour que vous puissiez m'aiguiller !

  14. #13
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Je suis entrain d'écrire le code, cependant je bloque sur l'instruction : "mettre un test if comparant la valeur référence de Feuil1 à la valeur référence de Feuil2"
    J'ai ouvert ma boucle for, mais aucune idée l'instruction qui permet de nommer les cellules.

    If "cellule (x,y).feuille1" = "cellule(x;y).feuille2" then
    Ce sont les entre guillemet que je ne sais pas traduire

    merci

  15. #14
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Plusieurs remarques préalables :
    recherche toujours le mot-clé du langage correspondant à l'objet que tu veux utiliser. Pour la cellule de feuille Excel, le mot clé est Cell au singulier et Cells au pluriel ; Pour la feuille, c'est Sheet
    La désignation d'un objet est toujours hiérarchique en commençant par le plus haut niveau. Pour désigner une cellule de la feuille 1, tu écriras : Sheet("Feuill1").Cells(ligne,c olonne) mais ça ne suffit pas.
    La cellule ayant plusieurs propriétés, tu dois aussi désigner la propriété qui t'intéresse. Pour utiliser la valeur d'une cellule, tu écrira : Sheet("Feuill1").Cells(ligne,c olonne).Value
    Puisque la boucle produit un déplacement de lignes, la référence au numéro de ligne doit s'adapter. Pour chaque pas de la boucle, il faut récupérer le numéro de ligne en utilisant la variable i créée dans la boucle FOR :
    Sheet("Feuill1").Cells(i,activ eCell.Column-2).Value
    ActiveCell.Column-2 donne le numéro de la colonne à tester, 2 colonnes à gauche de la cellule active (à adapter selon ton tableau)
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  16. #15
    Chanur

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Une remarque concernant la syntaxe de VBA : tu peux en obtenir facilement des exemples en utilisant "enregistrer une macro" et en faisant à la main ce qui ressemble le plus à ce que doit faire la macro.
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  17. #16
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Voila le bout de code que j'ai écris, malheureusement quand je le lance, rien ne se passe.
    Et je ne sais pas trop d'où cela peut venir, car je ne suis déjà pas sur de ma syntaxe !

    "
    Code:
    Sub PosteTravail()
     
    Dim Nblig As Integer
    Dim Lastline As Integer
    x = 1
    y = 1
     
    Sheets("IW49N").Activate
    Nblig = Cells.SpecialCells(xlCellTypeLastCell).Row
    Worksheets("COMPAS").Activate
    Lastline = Cells(Rows.Count, "N").End(xlUp).Row
    Sheets("COMPAS").Activate
    Cells(1, 14).Activate
        For i = 1 To Nblig
            For j = 1 To Lastline
            If Sheets("COMPAS").Cells(x, 14).Value = Sheets("IW49N").Cells(y, 1).Value Then
            Sheets("COMPAS").Cells(x, 16).Value = Sheets("IW49N").Cells(y, 2).Value
            y = y + 1
            End If
            Next
        x = x + 1
        Next
     
    End Sub
    "


    Auriez vous des retours à me faire ?
    Dernière modification par JPL ; 05/12/2016 à 16h30. Motif: Ajout de la balise Code (#) pour garder l'indentation

  18. #17
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Citation Envoyé par antoinecaud Voir le message
    Voila le bout de code que j'ai écris, malheureusement quand je le lance, rien ne se passe.
    Si il ne se passe rien, tu devrais avoir un message d'erreur
    Je reviendrai en fin de matinée avec plus d'infos !
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  19. #18
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Merci pour votre aide !

  20. #19
    Stan_94

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Hello,

    juste par curiosité, passer par une macro est imposé, c'est un "exo" ?
    Sinon parce que comme l'a bien dit cherbe en premier, l'utilisation de la formule RECHERCHEV() devrait suffire.

    Concernant les macros, il est utile de savoir les debugger pour comprendre ce qui se passe.
    Donc il convient d'éditer la macro et de placer un point d'arrêt à un endroit bien choisi afin d'en suivre ensuite le déroulement.

    Bon courage.

  21. #20
    cherbe

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Organise ton écran pour voir à la fois le code VBA et la feuille Excel.
    Place toi sur le code VBA
    Appuie sur la touche F8 pour exécuter le code ligne par ligne (pas à pas)
    Rapporte ici les erreurs éventuelles :
    Code:
    Sub PosteTravail()
         Dim Nblig As Integer
         Dim Lastline As Integer
         x = 1
         y = 1 
        Worksheets("IW49N").Activate
        Nblig = Cells.SpecialCells(xlCellTypeLastCell).Row
        Worksheets("COMPAS").Activate
        Lastline = Cells.SpecialCells(xlCellTypeLastCell).Row
        Worksheets("COMPAS").Activate
        Cells(1, 14).Select
        For i = 1 To Nblig
            If Worksheets("COMPAS").Cells(x, 14).Value = Worksheets("IW49N").Cells(y, 1).Value Then
               Worksheets("COMPAS").Cells(x, 16).Value = Worksheets("IW49N").Cells(y, 2).Value
           End If
           x = x + 1
           y = y + 1
       Next i   
    End Sub
    Pour avoir de l'argent devant soi, il faut en mettre de côté ! (proverbe lorrain)

  22. #21
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Dans ton programme a chaque tour de boucle, x et y sont incrémenter en même temps non ?
    Moi il faut que le programme quand x=1 recherche dans toute la colonne voulut la correspondance, puis passe à x = 2 et recherche encore dans toute la colonne voulut la correspondance, ne faut t-il pas du coup une double boucle ?

  23. #22
    antoinecaud

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    Stan,
    Non rien n'est imposé mais après avoir cherché des aides sur cette fonction, je ne sais tjs pas comment elle pourrait m'aider

  24. #23
    Chanur

    Re : (EXCEL) aide pour une petite macro sympa pour faire de la comparaison

    RECHERCHEV cherche un code (le premier argument) dans un tableau (le deuxième argument) et retourne la valeur de la colonne demandée (3e argument) sur la ligne correspondant au code (si le code existe dans le tableau. s'il n'existe pas, en fonction du 4e argument, elle retourne une erreur ou la ligne correspondant au code immédiatement inférieur).

    C'est pile ce que tu veux, non ?

    exemple :
    Nom : exemple_excel.jpg
Affichages : 223
Taille : 20,9 Ko
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2013, 17h10
  2. Aide pour Macro VBA sous Excel 2007
    Par biseibutsu dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 10/04/2013, 03h36
  3. Besoin d'aide pour faire des moyennes! (excel)
    Par b0ng07 dans le forum Logiciel - Software - Open Source
    Réponses: 12
    Dernier message: 09/02/2012, 14h02
  4. Aide pour faire une macro sur Powerpoint 2007
    Par roro123 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/12/2010, 10h42
  5. [excel] Macro pour graphique.
    Par invite266df5c8 dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 15/10/2009, 21h12