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 incrémentation et suppression


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut Macro incrémentation et suppression
    Bonjour,

    Je cherche à créer un classeur Excel me permettent de faire une commande facilement.

    Pouvez-vous m'aider?

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Si j'ai bien compris, à chaque appui sur le bouton, on ajoute une ligne supplémentaire de la feuille "Consommables".
    Le code
    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
    Sub Tri()
        Dim Plage As Range
        Dim e
        Dim f1 As Worksheet, f2 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("Commande")
        Set f2 = Sheets("Consommables")
        x = f1.Range("C" & Rows.Count).End(xlUp).Row + 1
        With f2
            Set Plage = .Range("E2:E" & .Range("C" & Rows.Count).End(xlUp).Row)
            For Each e In Plage
                If e.Value >= 1 And f2.Cells(e.Row, "G") <> "x" Then
                    f1.Range(f1.Cells(f1.Range("G2"), "A"), f1.Cells(f1.Range("G2"), "E")).Value = f2.Range(f2.Cells(e.Row, "A"), f2.Cells(e.Row, "E")).Value
                    f2.Cells(e.Row, "G") = "x"
                    f1.Range("G2") = f1.Range("G2") + 1
                    Set Plage = Nothing
                    Set f1 = Nothing
                    Set f2 = Nothing
                   Exit Sub
                End If
            Next e
        End With
        Set Plage = Nothing
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
     
    Sub Effacer()
        Dim f1 As Worksheet, f2 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("Commande")
        Set f2 = Sheets("Consommables")
        f1.Range("A10:E1000").ClearContents
        f1.Range("G2") = 10
        f2.Columns(7).ClearContents
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Le fichier
    Pièce jointe 580801

    Cdlt

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2020
    Messages : 2
    Par défaut
    Salut,

    Merci de ton aide pour le bouton "effacer".

    Je souhaitais que le bouton "actualiser" ajoute l'ensemble des lignes dont la quantité (colonne E) soit égale ou supérieur a 1.

    Je vais donc essayer de modifier le code ^^

    Cependant si quelqu'un a une idée je prends aussi car je suis vraiment un débutant :/

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Curieusement, une partie de votre demande initiale a disparu, il me semble bien qu'il était question que l'appui sur le bouton "Actualiser" devait recopier l'ensemble des données de la feuille "Consommables" (dont la quantité était >= à 1), vers la feuille "Commande", puis de ne conserver que la ligne 10 (la première) et d'effacer toutes les autres. Puis lors d'un second appui sur le bouton d'afficher la ligne suivante.
    Le code que j'ai fourni reproduit exactement cela, à chaque clic sur le bouton , il se rajoute une ligne de la feuille "Consommables".
    De plus pour repartir à zéro, j'avais ajouté un bouton "Effacer" pour recommencer. C'est la seule chose que vous avez retenu, et vous avez repris votre code initial pour lequel vous aviez demandé de l'aide, bizarre non!
    Il semblerait maintenant que vous vouliez la totalité du tableau des consommables (dont les quantités sont >=1), pourquoi ce changement?
    Alors si mon code ne correspond pas à vos attentes, réexpliquez clairement afin que l'on fournisse une réponse adaptée.

    Permettez-moi avant tout de demandez quelques précisions:
    -1) Pourquoi copier l'ensemble des lignes dont la quantité est >=1 pour ne conserver que la première et effacer les autres par la suite. Par analogie et pour suivre votre raisonnement, si vous résidez dans un immeuble de 20 étages et que vous habitiez au 1er, vous montez à chaque fois les 20 étages puis redescendez pour vous arrêter au 1er? Vous en conviendrez que cela n'a pas de sens et pourtant c'est ce que vous avez demandé initialement.

    -2) Les quantités inscrites dans la colonnes E de la feuille "Consommables", sont-elles au format numérique ou bien texte?, si c'est en numérique, il est inutile de mettre des guillemets dans l'expression If e.Value >= "1".

    -3) Pour recopier des valeurs d'un tableau vers un autre, inutile de recopier les lignes entières, seule la partie correspondant à la largeur du tableau est à recopier.

    Vous vous dites débutant, mais vous ne suivez pas ce que l'on vous propose et persistez à reprendre votre code.

    Maintenant, si vous voulez recopier l'ensemble des lignes dont la quantité est >=1, alors voici le code (le bouton "effacer " est supprimé, à chaque appui sur le bouton "Actualiser" les données précédentes sont effacées")
    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
    Sub Tri()
        Dim Plage As Range
        Dim e
        Dim f1 As Worksheet, f2 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("Commande")
        Set f2 = Sheets("Consommables")
        Effacer 'effacement des précédents collages
        x = f1.Range("C" & Rows.Count).End(xlUp).Row + 1 'dernière ligne
        With f2
            Set Plage = .Range("E2:E" & .Range("C" & Rows.Count).End(xlUp).Row) 'la plage de données
            For Each e In Plage
                If e.Value >= 1 Then 'Si la quantité est >=1
                    f1.Range(f1.Cells(f1.Range("G2"), "A"), f1.Cells(f1.Range("G2"), "E")).Value = f2.Range(f2.Cells(e.Row, "A"), f2.Cells(e.Row, "E")).Value 'copie des données
                    f1.Range("G2") = f1.Range("G2") + 1 'ligne suivante
                End If
            Next e
        End With
        Set Plage = Nothing
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
     
    Sub Effacer()
        Dim f1 As Worksheet, f2 As Worksheet
        Application.ScreenUpdating = False
        Set f1 = Sheets("Commande")
        Set f2 = Sheets("Consommables")
        f1.Range("A10:E1000").ClearContents
        f1.Range("G2") = 10
        f2.Columns(7).ClearContents
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Le fichier
    Pièce jointe 580873

    Si ce n'est pas encore ça, reformulez votre demande.

    Cdlt

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Incrémentation après suppression de lignes
    Par alpilon dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/12/2009, 01h53
  2. [XL-2007] Macro incrémentation d'une cellule
    Par Leovince dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/11/2009, 14h41
  3. Réponses: 3
    Dernier message: 23/10/2009, 19h25
  4. Champs auto incrémenté et suppression de tuples
    Par Didine981 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 11/04/2007, 14h38
  5. [VBA-E] macro VBA excel suppression graphiques
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 09h45

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