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 :

Étirer une formule jusqu'à xème lignes avec colonne variable [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2019
    Messages : 5
    Par défaut Étirer une formule jusqu'à xème lignes avec colonne variable
    Bonjour !

    J'aimerai faire une macro permettant d'étirer une formule vers le bas jusqu'à la ligne 166. (de la feuille IMB)

    La colonne est variable, j'effectue la manipulation chaque semaine.

    Pour cela j'ai préparé une formule dans la lignes 3 de chaque colonne, ensuite j'effectue une recherche de la première cellule vide sur la ligne 4 et je sélectionne la cellule au-dessus, ce qui me ramène à la cellule contenant la formule à étirer.

    C'est là que je bloque, je ne sais pas comment étirer jusqu'à la ligne 166 sans définir la colonne.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Etirer les formules
     
        Sheets("IMB").Select
     
        Dim li3 As Integer
     
        li3 = ActiveCell.Row
     
        Cells(li3, 256).End(xlToLeft).Offset(0, 1).Select
     
        ActiveCell.Offset(-1, 0).Select
    ainsi que le fichier Excel si besoin !

    PM.xlsx

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Summer789 Voir le message
    Bonjour,

    Essayez ce 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
     
    Sub EtirerLesFormules()
     
    Dim DerniereColonne As Integer, DerniereLigne As Integer, ColonneLigne4 As Integer
    Dim AireSelectionnee As Range
     
      With Sheets("IMB")
     
           DerniereColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column
           ColonneLigne4 = .Cells(4, .Columns.Count).End(xlToLeft).Column
           DerniereLigne = 166 ' .Cells(4, ColonneLigne4).End(xlDown).Row + 1
     
           If DerniereColonne > ColonneLigne4 Then
                Set AireSelectionnee = .Range(.Cells(3, ColonneLigne4 + 1), .Cells(DerniereLigne, DerniereColonne))
                AireSelectionnee.FillDown
                Set AireSelectionnee = Nothing
           Else
               MsgBox "Cellules déjà remplies !", vbCritical
           End If
     
      End With
     
    End Sub

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Merci, ça fonctionne mais la macro étire les formules de plusieurs colonnes or j'aimerai qu'à chaque fois que j'applique la macro, seule la dernière colonne vide (à partir de la ligne 4) s'étire.

    Citation Envoyé par marot_r Voir le message
    L'erreur : Variable objet ou variable de bloc With non définie m'est retournée :/

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Summer789 Voir le message
    Merci, ça fonctionne mais la macro étire les formules de plusieurs colonnes or j'aimerai qu'à chaque fois que j'applique la macro, seule la dernière colonne vide (à partir de la ligne 4) s'étire.
    Bonjour,

    D'après vous, que faut-il modifier dans cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set AireSelectionnee = .Range(.Cells(3, ColonneLigne4 + 1), .Cells(DerniereLigne, DerniereColonne))

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    D'après vous, que faut-il modifier dans cette ligne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set AireSelectionnee = .Range(.Cells(3, ColonneLigne4 + 1), .Cells(DerniereLigne, DerniereColonne))
    Ah super ! Je débute en VBA du coup ça m'a pris un peu de temps à comprendre la ligne mais j'ai trouvé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set AireSelectionnee = .Range(.Cells(3, ColonneLigne4 + 1), .Cells(DerniereLigne, ColonneLigne4))
    [/QUOTE]

    Merci beaucoup pour vos réponses !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Summer789 Voir le message
    T'es sûre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set AireSelectionnee = .Range(.Cells(3, DerniereColonne), .Cells(DerniereLigne, DerniereColonne))

  7. #7
    Invité de passage
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Février 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Février 2023
    Messages : 1
    Par défaut Etirer formule macro
    Citation Envoyé par Invité Voir le message
    Bonjour,

    Ce code marche très bien .

    Mais je ne trouve pas la solution pour étirer jusqu'à la dernière ligne remplie en colonne A.

    Auriez vous une solution? Merci pour votre aide

    Essayez ce 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
     
    Sub EtirerLesFormules()
     
    Dim DerniereColonne As Integer, DerniereLigne As Integer, ColonneLigne4 As Integer
    Dim AireSelectionnee As Range
     
      With Sheets("IMB")
     
           DerniereColonne = .Cells(3, .Columns.Count).End(xlToLeft).Column
           ColonneLigne4 = .Cells(4, .Columns.Count).End(xlToLeft).Column
           DerniereLigne = 166 ' .Cells(4, ColonneLigne4).End(xlDown).Row + 1
     
           If DerniereColonne > ColonneLigne4 Then
                Set AireSelectionnee = .Range(.Cells(3, ColonneLigne4 + 1), .Cells(DerniereLigne, DerniereColonne))
                AireSelectionnee.FillDown
                Set AireSelectionnee = Nothing
           Else
               MsgBox "Cellules déjà remplies !", vbCritical
           End If
     
      End With
     
    End Sub

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    J'essaierai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim colonne as long : colonne = activecell.column 'Détermine la colonne en cours
    dim zone as range : zone=activesheet.range(activesheet.cells(4, colonne), activesheet.cells(166, colonne)) 'Détremine la zone où on doit appliquer la formule
    zone.formulaR1C1=activesheet.cells(3, colonne).FornulaR1C1 'Applique la formule à la zone
    set zone=Nothing 'Signale qu'on a plus besoin de zone
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. [XL-2016] Application d'une formule matricielle en vba avec des variables ligne/colonne
    Par Le Phénomène dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/07/2019, 10h22
  2. étirer une formule jusqu'à un numéro de ligne
    Par statista dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/09/2016, 16h58
  3. [XL-2007] Macro comment copier une formule jusqu'à la derniere ligne d'une col
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/01/2012, 14h44
  4. étirer une formule jusqu'au bas
    Par huître dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 15/05/2011, 11h30
  5. [XL-2003] Appliquer une formule à toutes les lignes d'une colonne sans en connaitre le nombre à l'avance
    Par Chevrefeuille dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/04/2010, 14h43

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