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 :

Figer les valeurs d'une ligne et décaler les formules sur la prochaine ligne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut Figer les valeurs d'une ligne et décaler les formules sur la prochaine ligne
    Bonjour,
    Comme indiqué dans le titre, je désire grâce à l'emploi d'un user form ne garder que les valeurs d'une ligne de cellules et décaler les formules comprises dans ces cellules d'une ligne.
    Mon niveau VBA n'étant pas très bon, je galère depuis hier soir dessus. Quelqu'un aurait-il une piste pour moi?

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    grâce à l'emploi d'un user form
    pourquoi ?, une macro devrait suffire
    détailles un peu plus ta demande,
    si je comprends 1 - tu copies la ligne avec ses cellules et colles sur la ligne en dessous
    2 - tu reviens sur ta ligne et tu colles les valeurs
    c'est ça ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    C'est ça: 1)Insérer une nouvelle ligne en row+1 2)y copier les formules sur la ligne suivante en row+1, 3)figer les valeurs des cellules sur leur ligne, le tout se déclenchant par le fait de cliquer sur un bouton userform.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    cliquer sur un bouton userform.
    c'est ça que je ne comprends pas, un bouton sur ta feuille ne suffirait pas ?
    d'autre part, quand tu écris "copiier les formules sur la ligne en dessous, il n'y a rien sur cette ligne ?, tu veux travailler sur plusieurs lignes ?
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Un bouton sur la feuille pour déclencher tout ça suffirait parfaitement, mais j'ai malheureusement des difficultés à implanter une macro susceptible de faire ce que je veux
    Pour la ligne du dessous, il s'agirait d'en insérer une nouvelle en dessous de la dernière existante et d'y copier les formules, sans déplacer les valeurs écrites sur la ligne précédente.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    pour le bouton, je te guiderai, sais-tu te servir de l'enregistreur ? si oui, tu démarres l'enregistrement d'une macro, tu copies ta ligne, tu la colles sur celle en dessous, tu reviens sur ta ligne et collage spécial => valeurs, tu arrêtes la macro, tu publies ici la macro obtenue et je t'aiderai à nettoyer et à améliorer la macro, si tu ne sais pas te servir de l'enregistreur, je t'apprendrai à le faire pas à pas car ça te rendra certainement service plus tard
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour,
    je crois avoir compris que tu veux quelque-chose ressemblant à cet exemple (ici, les formules sont dans les colonnes A à C)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim derlig As Long, c As Range
    derlig = Range("A" & Rows.Count).End(xlUp).Row
    Range("A" & derlig + 1 & ":C" & derlig + 1).FormulaR1C1 = Range("A" & derlig & ":C" & derlig).FormulaR1C1
    For Each c In Range("A" & derlig & ":C" & derlig)
      c.Value = c.Text
    Next

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre solution peu importe où se trouve les formules.
    Etant donné l'utilisation de la propriété CurrentRegion, la première ligne contient les étiquettes de colonnes, la première colonne doit être remplie )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CopyRow()
     Dim rng As Range
     Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A1").CurrentRegion
     With rng
     .Rows(.Rows.Count).Copy .Rows(.Rows.Count + 1) ' Copie la ligne
      On Error Resume Next ' Pour éviter l'erreur dans la ligne du dessous si pas de constante
     .Rows(.Rows.Count + 1).SpecialCells(xlCellTypeConstants, 23).Clear ' Supprime les constantes
      On Error GoTo 0
      With .Rows(.Rows.Count): .Value = .Value: End With ' Remplace formules par leur résultat
     End With
     Set rng = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

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

    Désolé pour la latence! Je tiens à vous remercier de votre aide, l'enregistreur me facilite en effet grandement la tâche! Il reste quelques petits problèmes à fixer (d'autres formules censées être liées aux nouvelles cellules crées ne s'adaptent pas et restent fixer sur les anciennes cellules par exemple, problème de date à ajuster), mais l'essentiel est là avec cette macro!
    Encore une fois, merci beaucoup de m'avoir répondu aussi rapidement et efficacement.

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    (d'autres formules censées être liées aux nouvelles cellules crées ne s'adaptent pas et restent fixer sur les anciennes cellules par exemple, problème de date à ajuster),
    Il est possible que les formules ne sont pas bien référencées (Référence relative au lieu de référence absolue ou mixte par exemple)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 6
    Par défaut
    Bonjour,
    Je me suis bien servi d'une macro pour résoudre mon problème: en appuyant sur le bouton1, les formules en 205 sont transférées en 206, les valeurs de la 205 figées (en réalité recopiées en valeur) mais d'autres problèmes se présentent à moi: les formules des lignes 207 à 209 continuent à prendre, au lieu des cellules en dernière ligne, les cellules originales. J'ai choisi de vous envoyer un message privé directement car je pense que ce problème mineur ne doit pas intéresser grand monde. Auriez-vous une solution pour moi?

    Bonne journée!

    PS: je vous joins le fichier qui m'intéresse pour que vous vous fassiez une idée plus précise du problème.Classeur1.xlsm

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le code que j'ai publié dans ma première réponse fonctionne selon ta demande initiale tout au moins si j'ai bien compris cette demande;
    A savoir que la procédure copie la dernière ligne d'une plage de données qui contient à la fois des formules et des constantes sur la ligne qui suit et ensuite on transforme les formules par leur résultat (équivalant à un Copier/Collage spécial - Valeur et enfin on supprime les constantes de la ligne copiée laissant ainsi uniquement les formules.
    Pour le reste, soit le problème a été mal exposé au début soit les formules copiées sont mal référencées.
    J'ajoute que la procédure a été testée et elle fonctionne selon la description que je viens de donner et avec les contraintes expliquées dans ma première réponse (première ligne et première colonne remplie dans les plages définies pour les données).
    Sauf cas extrême, je n'ouvre pas les classeurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/07/2014, 10h12
  2. Réponses: 3
    Dernier message: 14/05/2014, 11h02
  3. Réponses: 3
    Dernier message: 02/04/2013, 23h10
  4. Réponses: 10
    Dernier message: 25/07/2012, 11h46
  5. Réponses: 2
    Dernier message: 24/03/2011, 00h17

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