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 :

multiples Calculs par ligne sur une feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut multiples Calculs par ligne sur une feuille
    Bonsoir à tous,

    Aller encore un défi pour moi même avec votre aide,

    Voici comment cela se présente:

    Nom : 2015-06-05_23-05-19.jpg
Affichages : 237
Taille : 162,8 Ko

    Comme vous pouvez le voir sur l'image, dans certaine case, j'ai des "calculs", et j'aimerai savoir comment l'appliquer sur une feuille entière à chaque ligne sans devoir l'étirer à chaque fois.

    une function peut-être?

    Je bosse de mon côté pour vous dire...

    Seb

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    voici pour toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        'recopie formule
    Sub RecopyFormula(ByVal xlsheet As Worksheet)
        Dim lastRow As Long
        Dim MyRange As Range
        With xlsheet
            lastRow = .Cells(1, 2).End(xlDown).Row
            .Range("A3").AutoFill Destination:=.Range(.Range("A3"), .Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
    End With
    End Sub
    voila n'oublie pas de mettre résolu

  3. #3
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut Saut TamTam
    Merci pour ta participation,

    si je comprends bien, ton code recopie une formule située en A3 et l'applique à toute la colonne A?

    Donc il faut que j'applique ton code à chaque "colonne" contenant une formule!!!

    Et si je fait comme cela j'ai pas testé encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'recopie formule
    Sub RecopyFormula(ByVal xlsheet As Worksheet)
        Dim lastRow As Long
        Dim MyRange As Range
        With xlsheet
            lastRow = .Cells(1, 2).End(xlDown).Row
            .Range("A3:AR3").AutoFill Destination:=.Range(.Range("A3:AR3"), .Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
    End With
    End Sub
    Bon WE
    Seb

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    'recopie formule
    Sub RecopyFormula(ByVal xlsheet As Worksheet)
        Dim lastRow As Long
        Dim MyRange As Range
        With xlsheet
            lastRow = .Cells(1, 2).End(xlDown).Row
            .Range("A3:AR3").AutoFill Destination:=.Range(.Range("A3:AR3"), .Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
    End With
    End Sub
    c'est exactement ca c'est super pour mettre un graphique a jour c'est la methode autofill

  5. #5
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Re,

    Il risque d avoir un problème ici je pense:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:AR3").AutoFill Destination:=.Range(.Range("A3:AR3"), .Range("A" & lastRow)), Type:=xlFillDefault
    Avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A" & lastRow)),
    Seb

  6. #6
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    je l'ai definie comme la derniere ligne pourquoi il y aurait un pb ?
    par contre c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3:AR3").AutoFill Destination:=.Range(.Range("A3:AR3"), .Range("AR" & lastRow)), Type:=xlFillDefault
    tu veux prendre la derniere ligne de ton range si je ne me trompe pas . Explique moi car ca marche , apres c'est vrai que je l'ai pas adapté , mais si vraiment tu galere passe moi les données je vais l'adapter , c'est un copié d'un de mes code , je m'en sert pour mettre a jour des graphiques

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si les données contenues dans la listes de données sont bien structurées (pas de cellules fusionnées, première lignes contenant les étiquettes de colonnes, etc.)
    Il suffit de transformer la plage de données en tableau et dès la création ou la modification des formules dans une cellule de la colonne, celle-ci est automatiquement reproduite sur toutes les lignes de cette colonne.

    Il existe également une astuce pour reproduire la même formule sur un ensemble de lignes et de colonnes.
    1. Sélectionner la plage de données concernée
    2. Ecrire la formule
    3. Valider par les touches Ctrl + Entrée

    Pour sélectionner rapidement toutes les lignes d'une colonne
    1. Sélectionner la cellule de départ
    2. Ensuite Ctrl + Maj + Flèche vers le bas
    3. Pour sélectionner ensuite les colonnes de droite, Maj + flèche droite

  8. #8
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut re
    Bon après essai, cela ne fonctionne pas

    J'ai essayé dans un classeur vierge, j'ai inscrit pour essai dans la cellule A1 un calcul (=somme(A2:A3)).

    Et si je laisse le code comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        'recopie formule
    Sub RecopyFormula (Byval xlsheet As Worksheet)
        Dim lastRow As Long
        Dim MyRange As Range
        With xlsheet
            lastRow = .Cells(1, 2).End(xlDown).Row
            .Range("A1").AutoFill Destination:=.Range(.Range("A1"), .Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
        End With
    End Sub
    je ne peux pas lancé la macro, car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Byval xlsheet As Worksheet)
    Donc j'ai modifié cette ligne en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub RecopyFormula() '(ByVal xlsheet As Worksheet)
        Dim xlsheet As Worksheet
    maintenant j'ai un message d'erreur:
    Erreur 91: variable object ou variable bloc with non définie
    Ensuite j'ai modifié comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub RecopyFormula() '(ByVal xlsheet As Worksheet)
        Dim xlsheet 'As Worksheet
    et là erreur sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastRow = .Cells(1, 2).End(xlDown).Row
    Object requis
    Seb

  9. #9
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut Modif
    Si je le fais passé comme cela ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        'recopie formule
    Sub RecopyFormula() '(ByVal xlsheet As Worksheet)
        Dim xlsheet 'As Worksheet
        Dim lastRow As Long
        Dim MyRange As Range
        'With xlsheet
            lastRow = Sheets("Feuil1").Cells(1, 2).End(xlDown).Row
            Sheets("Feuil1").Range("A1").AutoFill Destination:=Sheets("Feuil1").Range(Sheets("Feuil1").Range("A1"), Sheets("Feuil1").Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
        'End With
    End Sub
    Seb

  10. #10
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        'recopie formule
    Sub RecopyFormula(ByVal xlsheet As Worksheet)
        Dim lastRow As Long
        Dim MyRange As Range
        With xlsheet
            lastRow = .Cells(1, 2).End(xlDown).Row
            .Range("A3").AutoFill Destination:=.Range(.Range("A3"), .Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
    End With
    As tu réussi? , je vais te donner une petite astuce que j'utilise souvent encore , car comme toi je ne suis pas tjs sure de moi.
    Tu te crais toujours une fonction test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub test
    dim xlsheet as worksheet
    set xlsheet = thisworkbook.worksheets("Feuil1")
    call RecopyFormula(xlsheet)
    une methode simple pour pouvoir tester tes sub ou fonction avec des parametres et savoir si elle fonctionne..

  11. #11
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Points : 650
    Points
    650
    Par défaut
    Ahhh, superbe ça fonctionne.

    Le truc c que j'ai encore du mal à comprendre cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub RecopyFormula(ByVal xlsheet As Worksheet)
    Les parenthèses...... dans un Sub couplé avec çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub test
    dim xlsheet as worksheet
    set xlsheet = thisworkbook.worksheets("Feuil1")
    call RecopyFormula(xlsheet)
    En règle général, Je ne vois pas pourquoi, on créait un Sub ici "test"
    pour appeler avec Call l'autre sub "RecopyFormula"

    Alors que avec une seule procédure on peut le faire, comme je te l'ai présenté:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     'recopie formule
    Sub RecopyFormula() '(ByVal xlsheet As Worksheet)
        Dim xlsheet 'As Worksheet
        Dim lastRow As Long
        Dim MyRange As Range
        'With xlsheet
            lastRow = Sheets("Feuil1").Cells(1, 2).End(xlDown).Row
            Sheets("Feuil1").Range("A1").AutoFill Destination:=Sheets("Feuil1").Range(Sheets("Feuil1").Range("A1"), Sheets("Feuil1").Range("A" & lastRow)), Type:=xlFillDefault
            Calculate
        'End With
    End Sub
    Je suis autodidacte en VBA, j'adapte des codes à ma convenance, mais je t'avouerai que par moment il serait' mieux de créer les siens soi-même, mais quand je suis sur le faite accompli, je suis incapable de sortir un code, et pourtant je suis des formations en VBA, la dernière en septembre 2015 "Expert Avancé"....Et je rame toujours. J'ai du mal à causer avec Mr VBA car je n'ai pas la même logique que lui.....voir même ne pas comprendre sa logique....

    Bonne soirée

    Seb

    Seb

Discussions similaires

  1. TCDs multiples avec plusieurs filtres sur une feuille
    Par zenparadox dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/02/2014, 15h58
  2. Réponses: 5
    Dernier message: 09/09/2013, 09h33
  3. Ecrire par programmation sur une feuille protégé !
    Par Freiya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2007, 21h54
  4. [Access] Calcule par ligne dans une requête
    Par Belze dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/02/2006, 09h09

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