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 :

lecture donnée dans un onglet erronée [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut lecture donnée dans un onglet erronée
    Bonjour,


    Avec l'aide de l'un de vous, j'ai écrit un code qui envoie les ordonnées et les abscisse pour obtenir un tableau depuis une table.

    Le code marche bien... dans les abscisse j'ai un numéro qui est écrit en 2ème ligne, je cherche à inscrire le nom correspondant au numéro sur la première ligne. Ce nom ce trouve dans une autre feuille [MAJ] dans la plage M5:N36 Colonne M le nom à renvoyer colonne N le numéro.

    Pour cela j'ai rajouté une ligne dans ma boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Sheets("Balance_Géné").Cells(1, 1 + mondico.Count) = ActiveCell.FormulaR1C1 = "=INDEX(Maj!R5C13:R36C14,tablo,1)"

    J'ai comme résultat 'FAUX'
    la formule excel employée est : =INDEX(Maj!M5:N36;1;1)


    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
    'abscisse
     
           Set mondico = CreateObject("Scripting.Dictionary")
     
     
            For Each d In Sheets("Data").Range([A2], [A65536].End(xlUp))
                    'si la donnée n'existe pas encore dans le dictionnaire
                 If Not mondico.exists(d.value) Then
                    'on l'ajoute dans le dictionnaire...
                    mondico.Add d.value, d.value
                    '...et dans le tableau VBA ;-)
                        ReDim Tablo(1 To mondico.Count)
                        Tablo(mondico.Count) = d.value
     
                            Sheets("Balance_Géné").Cells(2, 1 + mondico.Count) = Tablo(mondico.Count)
                            Sheets("Balance_Géné").Cells(1, 1 + mondico.Count) = ActiveCell.FormulaR1C1 = "=INDEX(Maj!R5C13:R36C14,tablo,1)"
    '
                End If

    Comment résoudre ce problème

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    Désolé
    en fait je suis sur le point de trouver

    bon fin de we

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Essaies ceci
    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 MonDico As Object
    Dim d As Range
     
    Set MonDico = CreateObject("Scripting.Dictionary")
    For Each d In Sheets("Data").Range([A2], [A65536].End(xlUp))
        If Not MonDico.exists(d.Value) Then
            MonDico.Add d.Value, d.Value
            With Sheets("Balance_Géné")
                .Cells(2, 1 + MonDico.Count) = d.Value
                With .Cells(1, 1 + MonDico.Count)
                    .FormulaR1C1 = "=INDEX(Maj!R5C13:R36C14,R[1]C,1)"  'M5:N36 de MAJ
                    .Value = .Value
                End With
            End With
        End If
    Next d
    Set MonDico = Nothing

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 156
    Points
    156
    Par défaut
    suis vraiment désolé mercatog.
    au même moment j'étais sur une piste et je pensais aboutir.

    nos messages ce sont croisés

    la bonne formule est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Sheets("Balance_Géné").Cells(1, 1 + MonDico.Count) = "=INDEX(Maj!R5C13:R36C14,MATCH(R[1]C,Maj!R5C14:R36C14,0),1)"
    en EXCEL cela donne ça
    =INDEX(Maj!$M$5:$N$36;EQUIV(B2;Maj!$N$5:$N$36;0);1)


    J'ai d'ailleurs testé également avec ta routine, merci ça fonctionne.

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

Discussions similaires

  1. [AC-2003] rafraichir données dans un onglet
    Par Line dans le forum IHM
    Réponses: 5
    Dernier message: 11/05/2010, 19h03
  2. [XL-2003] Comparer des données dans 2 onglets et déplacer
    Par Neptune64 dans le forum Excel
    Réponses: 7
    Dernier message: 03/08/2009, 01h16
  3. Réponses: 27
    Dernier message: 05/09/2008, 18h01
  4. Verif existance de données dans un onglet XLS
    Par bahraoui dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/11/2007, 12h54
  5. Pb de lecture données dans une plage de cellule avec itération
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/07/2006, 14h33

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