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 :

Boucle vba pour remplir colonnes excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut Boucle vba pour remplir colonnes excel
    Bonjour,

    J'ai un tableau excel pour lequel je dois utiliser toutes les lignes(65536).
    Mon problème est que j'avais créé une formule recherche pour remplir ma colonne mais l'ordinateur n'arrive pas à suivre et plante à chaque fois.

    Je cherche quelle formule il faut utiliser pour que si ma ligne a une valeur > 0 dans la colonne A alors dans la colonne P j'utilise la fonction suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(A2="";ESTNA(RECHERCHEV(A2;docdest;3;0)));"";RECHERCHEV(A2;docdest;3;0))
    alors mettre la valeur et si la valeur dans la colonne A est = 0 alors la boucle s'arrête.
    Je dois remplir 26 colonnes de cette façon.
    A moins que quelqu'un ait une autre solution beaucoup plus efficace à me proposer et surtout plus rapide...

    En plus de ce soucis de plantage à cause du poids des infos, j'ai un problème de format de données.
    Ma table docdest est un copier/collage spécial avec liaisons d'un autre fichier mais le problème est que ma formule me donne des messages d'erreur #N/A parce que certaines données de ce tableau sont des chiffres au format lettre (j'ai voulu convertir tout le tableau mais il y a aussi des données lettres dedans alors je peux pas).
    J'ai essayé de faire un copier/collage spécial : valeur mais ça marche pas non plus.
    Comment dois-je faire pour ne plus avoir de message d'erreur ?
    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    en premier lieu, résorber les erreurs qui sont dans les cellules et traiter un problème après l'autre et pas tous ensemble, sinon,ça marchera jamais.
    Explique comment ça se fait que tu a des erreurs dans ta colonne.
    De plus tu montre une formule excel et tu demande de l'aide en VBA ? qu'en est-il ?
    A+

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Réponse sur le forum et pas en MP Svp, comme celà, tout le monde peu t'aiguiller et être au courant de ton problème.
    Mais que cherche-tu, une solution en VBA ou avec des formules excel, auquel cas tu ferais mieux de poser ta question dans le forum Excel. Bien que je pense que tu devras passer par du VBA.
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut
    En fait, je ne sais pas pourquoi mais alors que deux de mes onglets sont des copier/collage spécial avec liaisons du même document excel avec, il y en a un dont le format est parfait sans y toucher et l'autre, dont ma table docdest est issue, qui n'a pas le même format et qui a des petits triangles verts sur toutes les cellules contenant des chiffres uniquement et pas des chiffres et des lettres. Si j'en parle là c'est parce que c'est en cherchant une boucle pour appliquer ma fonction recherche à toute la colonne que j'ai vu apparaitre des #N/A.

    extrait du début de boucle que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'boucle de formule de recherche des colonnes:
    'p:
        Dim i As Long
        For i = CLng(2) To CLng(10)
        If Range("a" & i) > "0" Then
        Range("P" & i).Value = "=IF(COUNTIF(docdest!R2C1:R65536C1,fact!RC[-15])>0,VLOOKUP(fact!RC[-15],docdest,3,0),"""")"
        End If
        Next i
    Mais je voudrais qu'elle s'arrête de calculer quand la valeur 0 est dans la colonne A. Des suggestions ?

  5. #5
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonsoir,
    Quand tu donne un code utilise les balise
    sélectionne le code et clique sur l'icone # au dessus de la zone d'édition

    Si tu veux quitter la boucle for il suffit de luio dire exit for

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim i As Long
    For i = CLng(2) To CLng(10)
    If Range("a" & i) > 0 Then
    Range("P" & i).Value = "=IF(COUNTIF(docdest!R2C1:R65536C1,fact!RC[-15])>0,VLOOKUP(fact!RC[-15],docdest,3,0),"""")"
    elseif If Range("a" & i) = 0 Then
    exit for
    'ou alors pour quitter la subroutine
    exit sub
    End If
    Next i

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut ????
    Merci Krovax pour la formule de sortie mais par contre j'ai pas compris ton histoire de balise et de #. Je me suis mise au visual basic depuis seulement une semaine alors il y a plein de choses que j'ignore.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut affichage du résultat
    J'ai résolu le problème format de mes données mais quand je lance ma macro, si je regarde comme ça rien ne s'affiche, si je vais sur une des cellules de la colonne la formule apparait mais moi je voudrais que ce soit le résultat de la fonction recherche qui apparaisse. Comment faire ?

  8. #8
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    est ce que tu utilise bien le .formula?
    montre nous la dernière version de ton code (avec les balise )

  9. #9
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    que ce soit le résultat de la fonction recherche qui apparaisse. Comment faire ?
    Une autre piste, lance cette macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test-calcul ()
    ActiveSheet.EnableCalculation = True
    Calculate
    Application.ScreenUpdating = True
    End sub
    ou va dans OUTIL/OPTION/CALCUL et vérifie que tu est bien en automatique

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut SOS !!!! toujours problème !
    J'ai aussi résolu le problème de l'affichage du résultat. Mai là je viens de lancer ma macro juste sur la première colonne ( P) et l'ordi met au moins 10 minutes à effectuer ma fonction recherche avec la boucle. connaissez-vous un moyen pour que cela ne prenne que quelques secondes parce que j'ai encore 26 colonnes à renseigner de la même façon et le but des macros étant quand même d'accélérer les manip, là ça vaut pas le coup. Mais j'en ai vraiment besoin...

  11. #11
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Montre nous a macro complète car il doit y avoir pas mal de truc à améliorer pour que se soit si long

    Sinon essaye de commencer ta macro par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Application.ScreenUpdating = False
        ActiveSheet.EnableCalculation = False
    et de finir par le code d'aalex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     ActiveSheet.EnableCalculation = True
    Calculate
    Application.ScreenUpdating = True

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut ma macro de 10 min
    J'ai fait une commande comme ça pour chaque colonne (seul la clé et la colonne de recherche change) mais comme il y en 26 je vous en met qu'une. Seules les 2 premières sont très longues après j'ai pas testé mais ça devrait être moins long parce qu'il y a de moins en moins de données dans mes colonnes au fur et mesure que j'avance dans le tableau. Vous allez me dire que 65536 c'est beaucoup mais je dois prévoir un espace suffisant pour que l'entreprise n'est pas à y toucher trop vite. De plus dans ma colonne A qui sert de clé pour mes fonctions recherches il y a déjà plus de 3000 lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i As Long
        For i = CLng(2) To CLng(65536)
        If Range("a" & i) > "0" Then
        Range("o" & i).Formula = "=IF(OR(RC[-14]="""",ISNA(VLOOKUP(RC[-14],docdest,3,0))),"""",VLOOKUP(RC[-14],docdest,3,0))"
        ElseIf Range("a" & i) = 0 Then
        Exit For
        End If
        Next i
    Si vous trouvez une solution pour que ça aille plus vite ...

  13. #13
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Et si au lieu d'aller jusqu'a la ligne 65535 tu t'arrettais a la dernière ligne de la colonne? Ca te ferasi peut être gagner du temps

    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
    Dim i As Long
        Application.ScreenUpdating = False
        ActiveSheet.EnableCalculation = False
     
     
        For i = 2 To Range("A65536").End(xlUp).Row 'excel est malin il comprend que 2 est un nombre
        If Range("a" & i) > "0" Then
        Range("o" & i).Formula = "=IF(OR(RC[-14]="""",ISNA(VLOOKUP(RC[-14],docdest,3,0))),"""",VLOOKUP(RC[-14],docdest,3,0))"
        ElseIf Range("a" & i) = 0 Then ' a mon avis ceci devient inutil mais je ne peux pas savoir si un zéro peu apparaitre dans une colonne
        Exit For
        End If
        Next i
     
    'le reste de ton code
     ActiveSheet.EnableCalculation = True
    Calculate
    Application.ScreenUpdating = True
    Après tu peux aussi t'arréter a la dernière colonne
    Regarde ce lien il pourrais t'aider
    http://www.developpez.net/forums/d45...gnees-feuille/

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Par défaut Merci !
    Merci beaucoup à tous ceux qui m'ont aidée, ça y est ma macro fonctionne et relativement vite !

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

Discussions similaires

  1. [XL-2000] macro vba pour remplir un planning excel
    Par darkvadave dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/01/2012, 14h21
  2. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09
  3. [Project]boucle vba pour des page microsot office project
    Par nb_fr31 dans le forum Général VBA
    Réponses: 2
    Dernier message: 19/10/2007, 12h28
  4. Réponses: 8
    Dernier message: 29/06/2006, 15h37
  5. [VB.NET] [excel] Pb remplir colonne excel
    Par mikolirto dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/04/2005, 14h55

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