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 :

array et range


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut array et range
    Bonjour tout le monde
    j'ai un array composé de valeurs de cellule provenant de deux feuilles differentes. pour l'exemple, je n'ai mis que quatre cellules, mais il y en a une centaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memoDevisF = Array("", formulaire.Range("c3").Value, formulaire.Range("e3").value,param.Range("d3").Value, param.Range("d4").Value)
    puis je redispose ces cellule sur une ligne dans une troisieme feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For i = 1 To UBound(memoDevisF)
    devis.Cells(derligne, i) = memoDevisF(i)
    Next i
    le probleme c'est que ça marche bien, mais que c'est long. pour une centaine de cellule, je suis proche des 15 secondes
    je me dis qu'il doit y avoir moyen de faire :
    range (cells(derligne,1),cells(derligne,100)) = mémodevisF(?????)
    puisque le array c'est un tableau de 1 sur 100
    mais voila, j'y arrive pas, je ne sais pas si c'est possible, et auquel cas, je ne trouve pas la syntaxe. un coup de main est demandé. si ça se trouve c'est tout bète
    merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu sais que tu peux faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    w = 1 'Nombre total de colonnes dans le tableau
    'Nombre de lignes dans le tableau
    x = Range("A65536").End(xlUp).Row
     
    Tableau = Range(Cells(1, 1), Cells(x, w))
     
    'Et ensuite, pour coller sur une plage
    Range(Cells(1, 1), Cells(x, w)) = Tableau
    Tout droit sorti d'un exemple de tri alphabétique offert par SilkyRoad
    Faut lire !
    A+

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    ben oui, mais pas si simple
    j'ai bien essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    devis.Range(Cells(derligne, 1), Cells(derligne, UBound(memoDevisF))) = memoDevisF()
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    devis.Range(Cells(derligne, 1), Cells(derligne, UBound(memoDevisF))) = memoDevisF
    hé ben ça marche pas

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Edit
    Tu as aussi Union qui permet de créer une plage de cellules...
    Exemple de l'aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Sheet1").Activate
    Set bigRange = Application.Union(Range("Range1"), Range("Range2"))
    bigRange.Formula = "=RAND()"
    A toutes fins utiles

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour Alsimbad et Ouskel'n'or


    Tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim MemoDevisF As Variant
     
    MemoDevisF = VBA.Array("", formulaire.Range("C3").Value, _
        formulaire.Range("E3").Value, _
        param.Range("D3").Value, param.Range("D4").Value)
     
    Range(Cells(DerLigne, 1), Cells(DerLigne, UBound(MemoDevisF) + 1)) = MemoDevisF

    michel

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    merci michel, mais ...oups merci aussi ouskel
    mais ça ne marche pas. la seule difference avec mon code c'est MemoDevisF = VBA.Array, mais ça change rien

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    j'y crois pas, ça marche et c'est quasi imédiat, mais en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    devis.Select
    Range(Cells(derligne, 1), Cells(derligne, UBound(memoDevisF))) = memoDevisF
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    devis.Range(Cells(derligne, 1), Cells(derligne, UBound(memoDevisF))) = memoDevisF
    dite moi qu'il y a un plan B au select

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Oui, il y a Activate

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    lol. sérieux... man. on doit pouvoir.je crois me souvenir que tu m'avais sorti une epine du pied avec une aure histoire de ce genre. attend, je cherche dans mes messsages

  10. #10
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Précise le nom de la feuille pour ne pas avoir à utiliser "Select"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    devis.Range(devis.Cells(derligne, 1), devis.Cells(derligne, UBound(memoDevisF)))


    michel

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    hé voila. il est trop fort ce michel. c'étais les devis dans le range qu'il me manquait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    devis.Range(devis.Cells(derligne, 1), devis.Cells(derligne, UBound(memoDevisF) + 1)) = memoDevisF
    en fait, si j'avais vus ça j'avais pas besoin de poser la question sur le forum, ça faisait partie des solutions que j'avais testé.
    encore merci a tout les deux

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

Discussions similaires

  1. [XL-2007] Parcours d'un range transposé en array
    Par Dinytro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/08/2011, 10h27
  2. Réponses: 1
    Dernier message: 05/08/2008, 18h27
  3. Array: Colonnes et rangée
    Par virtuadrack dans le forum C++
    Réponses: 2
    Dernier message: 29/11/2007, 10h26
  4. [VBA-E]transformer array en tableau type range
    Par matel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/03/2006, 09h50
  5. [FreePascal] Array : range checking
    Par JoseF dans le forum Free Pascal
    Réponses: 3
    Dernier message: 07/05/2005, 12h41

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