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 :

Copier les formules de la ligne précedente


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de muzele
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut Copier les formules de la ligne précedente
    Encore une fois bonjour!
    Je vais essayer d'expliquer mon souci le plus clairement possible.
    J'ai une plage de cellules A10:Z110.
    1. La ligne 10 contient différentes formules en différentes colonnes
    2. Les données et formules de la ligne 10 ne seront jamais supprimés quelque soit les conditions, donc la ligne 10 a toujours les formules à copier.
    3. Une ligne vide ne peut pas exister entre 2 lignes ayant des données. Par exemple la ligne 27 est vide (sans formule ni données), les lignes allant de 28 à 110 seront forcément vides.
    4. La colonne A10:A110 ne sont jamais vide
    Je voudrais lancer une action qui vérifie si les lignes sont vides (mais à partir de la colonne B, parce que la colonne A n'est jamais vide). Si NON rien ne se passe et on passe à la ligne suivante. Si OUI on copie les formules de la ligne précédente et on passe à la ligne suivante jusqu'à atteindre la ligne 110.
    J'ai trouvé des codes ci et là, mais qui copie les formules vers un emplacement (ligne, colonne ou cellule) bien définit à l'avance. Je ne sais l'exploiter parce que je ne sais qu'elle ligne sera vide au préalable.
    P.S. Je suis nul en VBA, j'ai l'idée mais j'ai pas pu sortir ne fut-ce qu'une ligne de code. Moi suis plutôt VB6
    Merci d'avance!

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        Dim i As Integer, Plage As Range
        For i = 1 To 25
            Set Plage = [A11:A110].Offset(, i)
            If Application.CountA([Plage]) = 0 Then
                Plage.FormulaR1C1 = [A10].Offset(, i).FormulaR1C1
            End If
        Next i
    End Sub

  3. #3
    Membre confirmé Avatar de muzele
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut
    Merci Daniel,
    D'après ce que je comprend, ce code est censé copier les formules de la cellule A10 sur la plage A11:A110. J'ai voulu testé pour l'améliorer à mon besoin, mais ne fonctionne pas. Un processus se lance mais la formule n'est pas copiée.
    Cela ne résout pas mon souci. En pièces jointes mon fichier pour mieux comprendre. Ce que je veux, en partant de mon exemple, c'est copier toutes les formules de la plage A10:Z10 sur la plage A11:Z110 à condition que la ligne soir vide à partir de la colonne B.
    Nota: Dans mon classeur en pièces jointes, le code est dans le Module3 - La formule à copier : A16:O16 sur la plage A17:O115.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je ne sais pas si c'est ce que tu veux, mais la macro suivante recopie les valeurs également (colonne H par exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
        Dim i As Integer, Plage As Range, C As Range
        For i = 16 To 114
            Set Plage = [B1:O1].Offset(i)
            Plage.Select
            If Application.CountA([Plage]) = 0 Then
                For Each C In Plage
                C.FormulaR1C1 = [A16].Offset(, C.Column - 1).FormulaR1C1
                Next C
            End If
        Next i
    End Sub

  5. #5
    Membre confirmé Avatar de muzele
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut
    Merci pour ta disponibilité,
    Au fait ce n'est pas exactement ce que je veux. Je veux copier juste les formules sans les valeurs. Est-ce possible? Concernant les colonnes H et I qui sont en fait des listes déroulantes, je me demande bien quelle astuces appliquer pour qu'elle soient copiées comme tel (liste).

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Il y a peut-être aussi des formats à revoir.

    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
    Sub test()
        Dim i As Integer, Plage As Range, C As Range
        For i = 16 To 114
            Set Plage = [B1:O1].Offset(i)
            Plage.Select
            If Application.CountA([Plage]) = 0 Then
                For Each C In Plage
                    If C.Column = 8 Or C.Column = 9 Then
                        C.Offset(-1).Copy C
                    Else
                        C.FormulaR1C1 = [A16].Offset(, C.Column - 1).FormulaR1C1
                    End If
                Next C
            End If
        Next i
    End Sub

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

Discussions similaires

  1. Copier les cellules d'une ligne sélectionnée sur une autre feuille
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 17/07/2013, 21h19
  2. [XL-2007] Copier sans copier les formules
    Par maxval18 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/03/2012, 14h58
  3. [XL-2010] Macro pour inserer des ligne avec les formules de la ligne au dessus
    Par Argonan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2012, 13h58
  4. [XL-2003] Copier les formules d'une ligne à la ligne d'en dessous
    Par deamonRav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/04/2010, 15h40
  5. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 19h18

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