Besoin de macro et formules Excel
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Besoin de macro et formules Excel



  1. #1
    binome18

    Question Besoin de macro et formules Excel


    ------

    Bonjour à tous,

    J'ai un souci sur Excel (j'utilise actuellement Excel 2003 - je sais que ce n'est pas le plus récent)
    Je souhaiterais insérer des cellules sur une colonne lorsque la valeur d'une cellule est différente de celle d'à côté.
    Je ne sais pas trop comment vous expliquer cela, mais voici en pièce jointe un exemple plus parlant.
    Dans mon exemple, pour ajouter des cellules lorsque qu'une valeur est différente de celle d'à côté, j'ai fais un clic droit, puis insérer des cellules vers le bas. Cela a été assez rapide parce que je n'ai qu'une dizaine de lignes.
    Par contre dans un autre tableau (similaire en tous points par rapport à mon exemple) j'ai plus de 5000 lignes. Avec la technique que je viens de vous décrire ce serait beaucoup trop long et source d'erreur.

    Savez-vous quelle macro je pourrais utiliser pour faire ces opérations de manière automatique ?
    N'hésitez pas à me demander plus d'informations.

    Merci d'avance pour votre aide

    -----
    Images attachées Images attachées

  2. #2
    Stan_94

    Re : Besoin de macro et formules Excel

    Bonjour,
    puisque tu sais le faire à la main, utilise l'enregistreur de macro pour voir comment ça ce code, ajout un petit test sur le contenu de la cellule et le tour est joué.

    Bon courage.

  3. #3
    binome18

    Re : Besoin de macro et formules Excel

    Merci pour la réponse,

    Enregistrer les actions dans la macro, pas de souci., je sais faire.
    C'est pour faire le test d'égalité et les boucles que j'ai un problème.
    Il faudrait que je fasse un test pour savoir, par exemple, si la cellule B1 est égale à la cellule A1. Si c'est le cas, on passe à la cellule B2.
    Si à ce moment là, il y a une différence entre les cellules B1 et B2, il faut insérer des cellules dans la colonne A ou dans la B (suivant le numéro de bâtiment dans mon exemple). Il faut également faire une boucle, pour que tant que la condition est vraie, on insère des lignes.
    C'est ça que je ne sais pas coder

    Auriez-vous une astuce ?

    Merci

  4. #4
    matthieu2

    Re : Besoin de macro et formules Excel

    Bonjour,

    J'ai réalisé un programme qui peut t'aider avec l'imbrication de deux boucles et des tests sur les valeurs.

    Code:
    Function Commentaire_Semaine_1()
    
    'Dim PlanningGlobal As Workbook
    Dim PlanningInsecticides As Workbook
    
    'Variables pour les ordres
    Dim OrdreA As String
    Dim OrdreB As String
    
    'Variables pour les lignes i pour Summary et j pour Visual Mgt Semaine
    Dim i As Long
    Dim j As Long
    
    'Variable pour le commentaire/l'adr/expédition/Agi Code à copier
    Dim x As String
    Dim y As String
    Dim z As String
    Dim u As String
    
    Set PlanningInsecticides = ThisWorkbook
        
        i = 4
        j = 9
        
        Do While j < 300
            OrdreA = PlanningInsecticides.Sheets("Visual Mgt Semaine").Cells(j, 9).Value
            i = 4
            
            Do While i < 300
                OrdreB = PlanningInsecticides.Sheets("Summary").Cells(i, 6).Value
        
                If OrdreA = OrdreB Then
                    x = PlanningInsecticides.Sheets("Summary").Cells(i, 16).Value
                    y = PlanningInsecticides.Sheets("Summary").Cells(i, 20).Value
                    z = PlanningInsecticides.Sheets("Summary").Cells(i, 19).Value
                    u = PlanningInsecticides.Sheets("Summary").Cells(i, 7).Value
                    
                    PlanningInsecticides.Sheets("Visual Mgt Semaine").Cells(j, 13) = x
                    PlanningInsecticides.Sheets("Visual Mgt Semaine").Cells(j, 14) = y
                    PlanningInsecticides.Sheets("Visual Mgt Semaine").Cells(j, 15) = z
                    PlanningInsecticides.Sheets("Visual Mgt Semaine").Cells(j, 16) = u
                End If
                
            i = i + 1
            Loop
            
         j = j + 1
         Loop
           
    End Function

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

    Re : Besoin de macro et formules Excel

    Merci beaucoup pour cette réponse !!

    N'étant pas un spécialiste des macros sur Excel, je ne comprends pas le but de celle-ci :-/
    Je vois bien qu'il y a la fonction "Tant que" avec le "Do While" mais ça ne m'éclaire pas tellement.

    Pourrais-je avoir quelques explications, svp, afin que je puisse adapter cette macro à mon tableau ?

    Merci d'avance.

  7. #6
    matthieu2

    Re : Besoin de macro et formules Excel

    Bonjour,

    Je vais te le traduire en français


    Code:
    Dim PlanningHerbicides As Workbook
    Dim OrdreA As String
    Dim OrdreB As String
    Dim i As Long
    Dim j As Long
    Dim x As String
    Dim y As String
    Dim z As String
    Dim u As String
    Ici je déclare les variables que je vais utiliser dans mon programme. Je dis que la variable que j'appelle PlanningHerbicides est un classeur Excel (workbook en anglais)

    Je déclare les variables OrdreA, OrdreB, x, y, et u comme des chaînes de caractères (du texte quoi)

    Je déclare i et j comme des nombre allant de -2 147 483 648 à + 2 147 483 648 (c'est la définition du Long)



    Code:
    Set PlanningHerbicides = ThisWorkbook
    
        i = 4
        j = 458
    Ici, j'affecte une valeur à quelques variables. Je dis que ma variable PlanningHerbicides est le classeur sur lequel je travaille.
    i et j sont deux variables que je vais utiliser pour incrémenter le numéro de ligne dans mes boucles TANT QUE


    Code:
    Do While j < 895
            OrdreA = PlanningHerbicides.Sheets("Visual Mgt Semaine").Cells(j, 9).Value
    i = 4
    Je commence ma boucle TANT QUE ma viariable (qui vaut pour l'instant 458) est inférieur à 895 ALORS
    Ma variable Ordre A prend la valeur de la cellule en ligne 458 colonne numéro 9 (soit la colonne I) de mon onglet appelé "Visual Mgt Semaine" dans mon classeur actuel.

    Ensuite je réinitialise i à 4 car j'entame une seconde boucle avec i qui va s'incrémenter. J'explique ça par la suite

    Code:
    Do While i < 200
    
                OrdreB = PlanningHerbicides.Sheets("Summary").Cells(i, 6).Value
    De même que précédement, je commence une boucle TANT QUE i (qui vaut 4) est inférieur à 200 ALORS
    Ma variable Ordre B prend la valeur de la cellule en ligne 4 colonne 6 (soit la colonne F) de mon onglet appelé "Summary" dans mon classeur actuel.

    Ici ma boucle va s'executer et i va s'incrémenter à chaque passage. Quand i sera égal à 200, alors je vais repasser sur la première boucle où j va s'incrémenter de 1. Sauf que i sera toujours égal à 200 donc je le ré-initialise à 4 d'où le i = 4 après le stockage de la variable Ordre A dans la première boucle (celle avec j).

    Maintenant que mes deux variables Ordre A et Ordre B ont une valeur, je vais les comparer
    Code:
    If OrdreA = OrdreB Then
                    x = PlanningHerbicides.Sheets("Summary").Cells(i, 16).Value
                    y = PlanningHerbicides.Sheets("Summary").Cells(i, 20).Value
                    z = PlanningHerbicides.Sheets("Summary").Cells(i, 19).Value
                    u = PlanningHerbicides.Sheets("Summary").Cells(i, 7).Value
                
                    PlanningHerbicides.Sheets("Visual Mgt Semaine").Cells(j, 13) = x
                    PlanningHerbicides.Sheets("Visual Mgt Semaine").Cells(j, 14) = y
                    PlanningHerbicides.Sheets("Visual Mgt Semaine").Cells(j, 15) = z
                    PlanningHerbicides.Sheets("Visual Mgt Semaine").Cells(j, 16) = u
                End If
    SI mon Ordre A = Ordre B ALORS
    je stocke dans mes variables x, y, z et u la valeur de la cellule.... je passe les détails c'est comme quand je stocke les données dans Ordre A et Ordre B.
    pour le second paragraphe je fais une copie des valeurs contenue dans x, y, z et u dans l'onglet Visual Mdt Semaine dans les cellules correspondates.

    Code:
    i = i + 1
            Loop
            
         j = j + 1
         Loop
    J'incrémente mes variables i et j pour les boucles qui correspond en fait au passage à la ligne suivante.


    Si maintenant on applique ce raisonnement à ton cas:
    Tu stokes la 1ère valeur de ta première colonne
    Tu stokes la 1ère valeur de ta seconde colonne
    Tu test si valeur colonne 1 = valeur colonne 2
    SI OUI alors tu passes à la valeur suivante (incrémentation sur la ligne) et tu compares encore.
    Si NON alors tu insères une cellule dans la colonne que tu veux


    Voici un lien vers un site qui rescence pas mal de ligne de code
    http://francois.minardi.free.fr/DONNEES/PageVBA.html

  8. #7
    binome18

    Re : Besoin de macro et formules Excel

    Merci Matthieu pour cette description détaillée de la macro.
    Cela m'éclaire sur l'utilisation de certaines fonctions.

    Je garde précieusement le lien du site sur lequel il y a des lignes de code.
    Il y a pas mal de petites astuces

    Merci !!!!

  9. #8
    matthieu2

    Re : Besoin de macro et formules Excel

    Au plaisir

    Si tu as besoin d'aide pour la rédaction de ta macro n'hésite pas

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/11/2013, 17h10
  2. Help besoin d'une macro VBA pour remplir automatiquement un tableau excel
    Par malain69 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 24/11/2013, 07h39
  3. besoin d'une macro excel
    Par munsterkiler dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 28/01/2012, 14h09
  4. macro excel
    Par invited7c32506 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 06/05/2011, 09h54
  5. Besoin d'aide au sujet d'une macro excel.
    Par invite329675bd dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/05/2010, 03h17
Découvrez nos comparatifs produits sur l'informatique et les technologies.