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 :

Ajout ligne et clear content [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Assistant projets
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant projets
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut Ajout ligne et clear content
    Bonjour à tous,

    C'est mon premier message sur ce forum, sur lequel j'ai déjà trouvé beaucoup d'informations qui m'ont permis de faire différents essais et de comprendre la logique de vba (je ne suis pas débutante sur Excel mais en VBA oui, assez néophyte même !).

    Voilà ma question : j'ai un fichier de suivi d'activité d'un service. Toutes les colonnes contiennent des contraintes de validation de données et des formats variés, et les 5 dernières colonnes (Y à AC) contiennent des formules.

    Ce fichier est utilisé par de nombreuses personnes et j'ai tenté de le contraindre un maximum (d'où les validations de données) car il sert in fine à réaliser des statistiques de l'activité du service !

    J'ai ajouté un bouton de contrôle, et avec l'enregistreur de macro, j'ai copié la dernière ligne, inséré juste en dessous la ligne copiée, et effacé les données (mais pas le reste, formats, validations...) des colonnes Y à AC de cette ligne. J'ai affecté cette macro à mon bouton et il fait bien ce que je lui demande... C'est à dire qu'il copie la ligne 946 et l'insère en 947 en conservant tout ce que je veux conserver


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Ajout_Ligne_Suivi()
    ' Ajout_Ligne_Suivi Macro
        Rows("946:946").Select
        Selection.Copy
        Rows("947:947").Select
        Selection.Insert Shift:=xlDown
        Range("A947:X947").Select
        Application.CutCopyMode = False
        Selection.ClearContents
        Range("A947").Select
    End Sub
    Idéalement, j'aimerais utiliser quelque chose comme Derlig +1 ou End(XlDown) pour que cette ligne copiée soit systématiquement insérée après la dernière ligne remplie (en me basant sur la dernière ligne remplie en colonne A), et ensuite opérer un ClearContents des colonnes A à X de cette nouvelle ligne, quelle que soit sa position à ce moment là.

    J'ai fait plusieurs essais infructueux (notamment un qui m'a fait un peu peur, lorsque j'ai tenté un Range("A:X").ClearContents et que toutes mes lignes ont disparu

    Si vous pouvez m'aider à remettre tout ça dans le bon sens, ce serait top !

    Merci beaucoup et bonne journée !

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    ceci te copy la derniere ligne utilisée en colonne "A" en gardant le format sans les valeurs
    si j'ai bien compris c'est cela que tu veux
    adapte le nom de ta feuille (remplace"toto"
    si ta colonne de reference n'est pas A change le "A"

    et oui meme pour ca on peut se passer des ".select"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Ajout_Ligne_Suivi2()
    ' Ajout_Ligne_Suivi Macro
        With Sheets("toto")
            Set cel = .Cells(Rows.Count, "A").End(xlUp)
            cel.EntireRow.Copy
            cel.EntireRow.Insert Shift:=xlDown
            Application.CutCopyMode = False
            .Cells(Rows.Count, 1).End(xlUp).ClearContents
        End With
    End Sub
    une maniere differente de le coder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ajout_Ligne_Suivi3()
    ' Ajout_Ligne_Suivi Macro
        With Sheets("toto").Cells(Rows.Count, 1).End(xlUp)
            .EntireRow.Copy
            .EntireRow.Insert Shift:=xlDown
            Application.CutCopyMode = False
            .Parent.Cells(Rows.Count, 1).End(xlUp).EntireRow.ClearContents
        End With
    End Sub
    et encore une autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ajout_Ligne_Suivi3()
    ' Ajout_Ligne_Suivi Macro
        With Sheets("toto").Cells(Rows.Count, 1).End(xlUp)
            .EntireRow.Copy
            .EntireRow.Insert Shift:=xlDown
            .EntireRow.ClearContents
            Application.CutCopyMode = False
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    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 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux pouvoir rjouter une ligne vide à la fin de ton tableau de suivi mais qu'elles en fasse partie de ton tableau

    si c'est bien le cas il te faut utiliser les tableaux structurés car cela fait cet type d'ajout tout seul

    Tableau structuré : (Insertion - Tableau)

    Ou alors j'ai pas compris dans ce cas réexplique

    à bientôt

  4. #4
    Candidat au Club
    Femme Profil pro
    Assistant projets
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant projets
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
     
    Merci beaucoup Patrick,

    C'est parfait pour la partie d'ajout, et c'est partiellement ce qu'il me faut, par contre je ne veux utiliser le ClearContents que de A à X (les colonnes Y à AC doivent conserver leurs formules). Je sais qu'on peut faire un if.hasformula mais ça me semble inatteignable, c'est pour ça que j'avais imaginé un clearContents sur une plage du style (je sais que c'est incorrect, mais c'est pour que vous me compreniez) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Range(A:X).ClearContents
    Vois tu ce que je veux dire ?

    Merci encore en tout cas, je savais bien qu'en venant ici, j'avancerais plus vite (même si c'est vous qui me faites avancer en réalité )

    Citation Envoyé par Igloobel Voir le message
     
    Merci pour ta réponse Igloobel,

    Malheureusement ce fichier est utilisé par beaucoup de collaborateurs qui ne feraient pas glisser les formules (ce qu'il faudrait de toute manière faire sur les dernières colonnes avec un tableau structuré) et qui feraient des copier-coller dans tous les sens (c'est d'ailleurs mon problème actuel). C'est la raison pour laquelle j'ai fait ce bouton : pour les contraindre et éviter de corrompre la qualité des données.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re en gardant les formules
    re
    Malheureusement ce fichier est utilisé par beaucoup de collaborateurs qui ne feraient pas glisser les formules (ce qu'il faudrait de toute manière faire sur les dernières colonnes avec un tableau structuré)
    de la meme maniere qu'avec un range classique puisque tu fait un clearcontents la bonne blague

    celles ci te garde les formules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ajout_Ligne_Suivi3()
    ' Ajout_Ligne_Suivi Macro
        With Sheets("toto").Cells(Rows.Count, 1).End(xlUp)
            .EntireRow.Copy
            .EntireRow.Insert Shift:=xlDown
            .EntireRow.SpecialCells(xlCellTypeConstants).ClearContents
            Application.CutCopyMode = False
        End With
    End Sub
    Nom : demo2.gif
Affichages : 267
Taille : 838,3 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Candidat au Club
    Femme Profil pro
    Assistant projets
    Inscrit en
    Février 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant projets
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2019
    Messages : 3
    Par défaut Meci mille fois !
    Merci beaucoup, ça fonctionne du tonnerre !
    C'est par-fait !

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

Discussions similaires

  1. Ajouter ligne fictive
    Par forzaxelah dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/07/2006, 11h54
  2. ajout ligne dans tableau sous IE
    Par n00noors dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/07/2006, 12h55
  3. Réponses: 15
    Dernier message: 09/06/2006, 12h13
  4. Réponses: 1
    Dernier message: 02/06/2006, 13h51
  5. [C#] Datagrid, ajouter ligne vide
    Par forst dans le forum ASP.NET
    Réponses: 7
    Dernier message: 06/04/2006, 16h39

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