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 pour vérification nomenclature et mise à jour de celle-ci


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut Macro pour vérification nomenclature et mise à jour de celle-ci
    Bonjour à tous,

    La situation est la suivante : j'ai une usine avec 2 machines : machine 1, machine 2
    Chaque machine a sa propre feuille Excel où sont répertoriés leurs différents éléments sous forme de nomenclature (1.1, 1.2, 1.2.1, etc. pour la machine 1, 2.1, 2.2, 2.2.1, etc. pour la machine 2)

    J'ai une feuille "Nomenclature usine" qui récapitule l'ensemble de la nomenclature des 2 machines à la suite : machine 1 puis machine 2

    Le problème est le suivant : lorsqu'un nouvel élément de la machine 1 et/ou 2 est ajouté, comment mettre à jour la feuille "Nomenclature usine" avec ce nouvel élément et que celui-ci soit mis au bon endroit dans la nomenclature ?

    Voici la macro que j'ai écrite mais elle ne fonctionne pas et j'ai besoin d'aide pour comprendre pourquoi (je suis très novice en la matière mais aussi très intéressé par la programmation !)

    La macro est buggée à la ligne Rows (i, i) et je ne comprend pas pourquoi


    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
    Sub maj_nomenclature()
    Dim i As Integer                                                               
    Dim nb_ligne As Integer
     
    For feuille = 2 To Sheets.Count                                             'Boucle For sur la feuille Machine 1 puis machine 2
    Sheets(feuille).Activate
        nb_ligne = WorksheetFunction.CountA(Range("C:C"))         'Pour connaitre le nombre de lignes sur lesquelles faire l'opération
            For i = 2 To nb_ligne
                If Cells(i, 2) <> "" Then                                           'Test si la cellule voisine à la nomenclature est vide ou non (c'est le cas si on ajoute un nouvel élément)
                    Cells(i, 3).Copy                                                   'Si cellule voisine non vide (pas de nouvel élément), copier l'élément de nomenclature dans la feuille "Nomenclature usine"
                    Sheets("Nomenclature usine").Activate
                    Cells(i, 3).Select
                    ActiveSheet.Paste
                Else                                                                     'Cas où un nouvel élément de nomenclature a été ajouté
                    Cells(i, 2).Select
                    ActiveCell.Value = "x"                                        'ajout de "x" dans la cellule voisine pour éviter de refaire cette opération la prochaine fois que la macro sera lancée
                    Cells(i, 3).Copy                                                 'Copie de la nomenclature du nouvel élément
                    Sheets("Nomenclature usine").Activate                'Sélection de la feuille "Nomenclature usine" et création d'une nouvelle ligne pour y coller la nomenclature du nouvel élément
                    Rows(i, i).Select
                    Application.CutCopyMode = False
                    Selection.Insert Shift:=xlUp, CopyOrigin:=xlFormatFromLeftOrBelow
                    Cells(i + 1, 3).Paste
                End If                                                        
            Next i                                                                   'Passage à la ligne suivante
        Next feuille                                                              'Passage à la feuille suivante
    End Sub

    Merci d'avance pour votre aide !!

    Nono
    macro test.xlsm
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir, pour selectionner toute la ligne:
    Cordialement

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut
    Effectivement, merci transitoire

    Maintenant la macro est buggée à la ligne Cells(i+1, 3).Paste

    De plus, la macro ne fait pas ce que je veux, elle colle le "x" dans la feuille "Nomenclature usine" et s'arrête dès la nomenclature 1.1

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Janvier 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Janvier 2020
    Messages : 7
    Par défaut
    Edit : j'ai trouvé pourquoi la macro ne collait pas dans la bonne feuille : j'avais oublié de préciser après la fin du If de revenir dans la feuille machine

    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
    Sub maj_nomenclature()
    Dim i As Integer
    Dim nb_ligne As Integer
     
    For feuille = 2 To Sheets.Count
    Sheets(feuille).Activate                                                            'sélection de la feuille Machine 1
        nb_ligne = WorksheetFunction.CountA(Range("C:C"))     'établissement de la dimension de la boucle For
            For i = 2 To nb_ligne
            Sheets(feuille).Activate
                If Cells(i, 2) <> "" Then                                           'si cellule voisine non vide, alors copie de la nomenclature et collage dan lafeuille "Nomenclature usine"
                    Cells(i, 3).Copy
                    Sheets("Nomenclature usine").Activate
                    Cells(i, 3).Select
                    ActiveSheet.Paste
                Else                                                                    'sinon, ajout de "x" dans la cellule voisine et copie de la nomenclature du nouvel élément
                    Cells(i, 2).Select
                    ActiveCell.Value = "x"
                    Cells(i, 3).Copy
                    Sheets("Nomenclature usine").Activate
                    Rows(i).Insert Shift:=xlUp                          'insertion d'une nouvelle ligne pour y mettre le nouvel élément
                    ActiveSheet.Paste                                      'collage du nouvel élément dans la nouvelle ligne
                End If
            Next i
        Next feuille
    End Sub
    En revanche, la macro bug toujours à la ligne Cells(i+1, 3).Paste et la macro insère et colle la valeur dans une nouvelle ligne alors que je voudrais que ce soit seulement dans la cellule du dessous
    Autre problème, quand je passe à la seconde feuille, la macro colle la valeur à la première ligne et non pas à la suite des nomenclatures de la machine 1

  5. #5
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i + 1, 1).PasteSpecial Paste:=xlValues
    Cordialement

Discussions similaires

  1. [AC-2007] Supprimer la demande de confirmation pour des requêtes ajout / mise à jour
    Par cslbcg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/11/2009, 22h38
  2. [MySQL] Message de sortie erroné pour une requête de mise à jour
    Par ikramta dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/03/2009, 17h23
  3. Réponses: 12
    Dernier message: 09/02/2008, 14h41
  4. Macros insérer feuille ligne et mise à jour
    Par rembliec dans le forum Excel
    Réponses: 6
    Dernier message: 08/11/2007, 15h48
  5. Méthode pour un formulaire de mise à jour
    Par deviltaz dans le forum IHM
    Réponses: 12
    Dernier message: 07/10/2004, 11h01

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