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 :

Utilisation d'un delimiteur [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 97
    Par défaut Utilisation d'un delimiteur
    Bonjour

    voila j'ai ce code qui me permet de rassembler toutes les données d'une ligne mais le problème c est que j'arrive pas à renvoyer vers les ranges en question ?

    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
    29
    30
    31
    32
    33
    34
     
    Dim listdon As Variant
    Dim donexp As String
    Dim lign As Byte
    Dim donner As Variant
     
     
    Const Separateur  As String = ";"
     
     
    With target
            If .Column <> 4 Or .Row < 27 Then Exit Sub
            lign = .Row - 26
            listdon = Array("CLI", "DS", "SF", "VD", "AMCCY1", "AMCCY2", "CCYON", "CCYTT", "RATES")
            donexp = ""
            For Each donner In listdon
                     donexp = (donexp & Separateur & range(donner & "_" & lign))
            Next donner
     
    Call crea_page
    Call varcop
     
    Sheets(nom).range("CLI", "DS", "SF", "VD", "AMCCY1", "AMCCY2", "CCYON", "CCYTT", "RATES").Select
    Selection.Value = donexp
     
     
    End With
     
     
    Call TypOpe
     
    Call transvalneg
     
    End Sub
    en testant le donexp a la fin d ou mon select ... je vois bien que les valeurs sont prises en compte... cela me permettait juste de tester

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Une question que je me pose...

    Qu'arrive-t-il lorsque la valeur de lign est plus grande que 255 ? Parce qu'il y a quelque chose comme 65536 objets (propriétés en fait) Row dans un Worksheet et que le type de donnée d'un Row est Long (integer)...

    J'avais déjà remarqué dans ton autre post.

    Tel quel, ton code crée une adresse de Range qui commence par un ";".

    Curieusement, j'aurais plutôt utilisé des variables de type Range pour passer des valeurs d'une feuille à l'autre.
    Ou un bon vieux copy - paste.

    Une exemple dont tu pourra t'inspirer et qui utilise des variables de type Range:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub CopierAversB()
        Dim plageA As Range
        Dim plageB As Range
        Set plageA = Feuil1.Range("B3,D8,C19,F10,G17,H6")
        Set plageB = Range("Copies!B3,D8,C19,F10,G17,H6")
        plageB.Value = plageA.Value
        Set plageA = Nothing
        Set plageB = Nothing    
    End Sub
    Tu as surement remarqué que j'ai mis le nom de la seconde feuille directement dans l'adresse du Range en le séparant des adresses de cellules par un "!".

    Il est important de libérer la mémoire avec l'instruction Set variable = Nothing lorsqu'on affecte un objet à une variable si non, la cellule de mémoire se remplis et reste occupée indéfiniment...

    bonne continuation

    [Edit]
    Juste au cas où... j'ai la version Office XP, donc Excel 2002.

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    En fait :

    Il n’y a qu’une propriété Row par objet et elle concerne une plage donc nombre = indéterminé.

    Il y a 1.048.576 lignes dans sa version vu qu’il a tagué 2007.

    La propriété Row renvoie bien Un Long, mais pas (integer).

    cordialement,

    Didier

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 97
    Par défaut
    merci
    Je comprends pas trop la .... en faite vous parlez du type de mes variables


    en faite je l'ai défini comme une chaîne de caractére donexp ... mais au sein de donext nous avons autant du texte que des nombres ...

    tout le code marche bien car il sélectione bien les données que je veux ...

    mais le problème est lorsque je veux affecter chaques variables à leur destination .... le résultat est celui recherché car quand je mets mon curseur de souris sur donexp il m'affiche bien les données mais par contre cela ne les renvoie pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets(nom).Range("RATES", "CCYTT", "CCYON", "AMCCY2", "AMCCY1", "VD", "SF", "DS", "CLI").Select
    Selection.Value = donexp

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    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 : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    On te parle de ta variable Lign qui est typée comme un Byte ce qui fait un maximum de 256.
    Donc si tu cliques sur une ligne au delà de la ligne 283 tu auras un problème avec cette instruction.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 97
    Par défaut
    Bonjour,

    ah ok ... merci pour la précision !

    mais cette variable je peux la faire passer en integer ou en long ... et je n'aurai plus ce problème ??

    par contre, savez-vous pourquoi j'ai ce problème dans le rangement de mes données ?

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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