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 :

problemes tirer les formules excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut problemes tirer les formules excel
    je cherche à tirer les formules par le VBA...
    J'ai un probleme il me dit que la méthode de l'objet range global a échoué...
    voici mon 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
    24
    25
    26
    27
    28
    'Déclaration des variables
    Dim premiereligne, derniereligne, plage
    premiereligne = 20
    derniereligne = 565
     
    'Recherche de fin de fichier
    compteurligne = premiereligne + 1
    plage1 = ("20;565") '(lignes)
    plage2 = Range("31;79") '(colonnes)
     
        While ThisWorkbook.Worksheets("Feuille principale").Cells("premiereligne;derniereligne").Range("plage2") <> "Veuillez ne pas supprimer ces lignes"
        Wend
    derniereligne = compteurligne
                If premiereligne = 0 Then
            premiereligne = premiereligne + 1
     
    'Désactivation des filtres
    If ThisWorkbooks.Worksheets("Feuille principale").FilterMode = True Then
    ActiveSheet.ShowAllData
    End If
     
    'Destination des formules
     
    Selection.AutoFill Destination:=Range("plage2;derniereligne"), Type:=xlFillDefault
     
    End If
    Calculate
    End Sub
    merci

  2. #2
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Salut melodyyy,

    Ben en fait comment dire, y a pas grand chose qui va dans ton code faudrait que tu revois un petit peu. Déjà mets des balises code c'est mieux

    Qu'est ce que tu veut faire avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     plage1 = ("20;565") '(lignes)
    plage2 = Range("31;79") '(colonnes)
    déjà il faut mettre deux point au lieu d'un ;

    ensuite tu déclare un compteurligne mais tu l'utilise pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     compteurligne = premiereligne + 1
    Tu fais des boucles qui font rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    While ThisWorkbook.Worksheets("Feuille principale").Cells("premiereligne;derniereligne").Range("plage2") <> "Veuillez ne pas supprimer ces lignes"
        Wend
    en supposant que ça fonctionne ça tourne en boucle infinie!!

    et je fais pas le détaille de tout.....

    Détail un peu plus ta logique de ce que doit faire ton prog
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  3. #3
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    en fait, si il y'a un 0 dans la cellule il doit tirer la formules de cette celulle jusqu'en bas sachant que le fichier est très très gros et très très grand

  4. #4
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Donc on avance un petit peu ce que tu veux faire c'est parcourir toutes les cellules de la plage de cellule et si le résultat de la formule dans cette cellule est 0 c'est prendre la formule. Mais tu veux la mettre où cette formule?
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  5. #5
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    presque
    si dans la cellule 20 (premiereligne) j'ai un 0, alors il prend la formule qui est dans cette cellule etil la tire jusqu'a à la fin du fichier

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Est ce que tu comprends ce qu'est une boucle, une variable ?
    Est ce que tu as compris ce que fait la fonction Range ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    ah oui tout à fait

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Est ce ironique ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  9. #9
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    non je débute, je commence a peine à tenter de me servir de VBA, donc logiquement il me faut des macros simple et je les traduis simple...

  10. #10
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Alors il faut que tu débute avec des choses simples, car avec le code que tu as déjà commencer à faire tu as déjà beaucoup de problèmes
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  11. #11
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Bonjour,

    Moi, je me servirai dans un premier temps de l'éditeur de macro pour coir déja ce que donne le code

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je te conseille de regarder les tutoriaux sur VBA, et les concepts de la programmation, parce que la je pense que tu n'as même pas compris ce qu'était une boucle. Et si je me trompe alors dis moi ce que c'est.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  13. #13
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    oui voila mais ma 1ere macro à faire c'est celle la j'y peux rien...

    Quand à la boucle, c'est une macro qui détermine que l'ont doit continuer à anvancer tant que ce qui est vrai n'est pas trouvé.
    Il y'a plusieurs sorte de boucle, je te parle de la mienne, elle fonctionne comme ça.

    Donc tant qu'elle pas trouvé le 0 dans la case, elle avance, continue. Si elle trouve alors elle étend la formule jusqu'en bas du fichier, d'ou la recherche de fin de fichier

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Points : 253
    Points
    253
    Par défaut
    Salut,

    Sur Excel, je ne crois pas qu'il y ai une fin de fichier (peut-être 999999)
    Menfin je pense pas que tu veuilles aller jusque là.

    Je n'ai pas compris cette phrase

    Si elle trouve 'un 0' alors elle étend la formule jusqu'en bas du fichier
    Si je comprends tu veux recopier la formule qui se trouve dans la cellule ou se trouve la value zéro sur cette même colonne mais sur les lignes du dessous jusqu'à arriver "à la fin du ficher excel"

    Voici ce que je ferais

    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
    Sub recopie()
     
     
    Dim i As Integer
    Dim j As Integer
     
    i = 1
     
    Range("E" & i).Select
    Do While (ActiveCell.Text <> 0 And i < 100)
        i = i + 1
        Range("E" & i).Select
    Loop
     
    If (i < 100) Then
        For j = i To 100
            Selection.AutoFill Destination:=Range("E" & j, "E" & (j + 1)), Type:=xlFillDefault
            Range("E" & j + 1).Select
        Next j
    End If
     
    End Sub

  15. #15
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    ça revient un peu au même que ce que je fais nan ?
    moi je désactive les filtres aussi

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Si je comprend bien ce que tu as essayé de faire :

    Ton fichier excel comprend 565 lignes, et commence a la 20ème ligne
    Tu as 48 colonnes : de 31 à 79

    Ce que je comprend pas c'est ce que ta boucle est censé faire...
    Ta cellule qui doit contenir 0, c'est laquelle ? la cellule de la ligne 20, colonne 31?
    ou alors n'importe quelle cellule de la ligne 20 entre la colonne 31 et la 79 ?



    Pour Tazmania : Un fichier excel comprend 65536 lignes...

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 364
    Points : 253
    Points
    253
    Par défaut
    Oui

    Un fichier excel comprend 65536 lignes
    De toute façon à partir de 32767, Excel va d'indiquer qu'il y a un dépassement de capacité

  18. #18
    RLX
    RLX est déconnecté
    Membre du Club Avatar de RLX
    Inscrit en
    Octobre 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Moi je donne une piste à méditer pas très compréhensible le code mais quand même efficace :

    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
    Set Maplage = Worksheets("Sheet1").Range("B7:G20")
        For Each MaCell In Maplage.Cells
            If MaCell.Value = 0 Then
                'MaCell.Select
                Exit For
            End If
        Next
        MaCell.AutoFill Destination:=Range( _
        'Colonne de la première cellule de la plage a appliquer autofill
        Split(Columns(MaCell.Column).Address(ColumnAbsolute:=False), ":")(1) _
        'Ligne de la première cellule de la plage a appliquer autofill
        & Mid(Str(MaCell.Row), 2, Len(Str(MaCell.Row)) - 1) _
        'Colonne de la dernière cellule de la plage a appliquer autofill
        & ":" & Split(Columns(MaCell.Column).Address(ColumnAbsolute:=False), ":")(1) _
        'Ligne de la dernière cellule de la plage a appliquer autofill
        & Mid(Str(MaCell.End(xlDown).Row), 2, Len(Str(MaCell.End(xlDown).Row)) - 1)), _
        Type:=xlFillDefault
    pour tester il faut enlever les commentaires bien sur!!!
    Pour résoudre un problème le plus dur n'est pas de trouver la solution, c'est de trouver celui qui la connait !!!!

  19. #19
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Dis moi, melodyyy, comment compte tu répéter un ensemble d'action, si à la ligne qui est juste après le mot clé du début d'une boucle, tu mets le mot clé de fin de boucle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    While 'début de boucle
    Wend 'fin de boucle
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  20. #20
    Membre du Club Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Points : 50
    Points
    50
    Par défaut
    merci tout le monde je prends en note de l'adresse du post pour garder vos codes

    Pour le post du dessous, le 0 est sur n'importe quelles cellules de la ligne 20 et copier la formule en bas de la colonne correspondante. Ma boucle est sensé faire ça si tu veux c'est comme si je disais je le fais sur une colonne et ça se répète sur toutes les autres

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/09/2012, 14h15
  2. probleme dans une formule[excel]
    Par lumbroso dans le forum Excel
    Réponses: 5
    Dernier message: 19/06/2007, 06h54
  3. Tirer les formules avec boucle et condition excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/10/2006, 15h11
  4. Delphi et les formules Excel
    Par defluc dans le forum Delphi
    Réponses: 2
    Dernier message: 28/06/2006, 11h38
  5. [][Excel] Comment ne pas détruire les formules ?
    Par flyangelNext dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2003, 11h38

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