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

Excel Discussion :

Tranfert de données (formules maticielles ?)


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut Tranfert de données (formules maticielles ?)
    Bonjour à tous,

    Je tente en vain avec une rechercheV de transférer le contenu d'une colonne d'un tableau 1 vers un tableau 2. Je pense qu'un index/equiv serait plus judicieux....mais ne connaissant pas bien ce groupe de fonctions...

    Alors voilà mon problème:
    Transféré l'information de la colonne D (1er tableau ) dans la colonne J (2ème tableau) en tenant compte du N° de compte sachant que:
    → Dans la colonne B du 1er tableau(N° de compte) sont en fait enregistré des racines de comptes qui peuvent être partiellement ou totalement équivalentes au N° de compte du 2ème tableau colonne H (Comptes sans budget) EX: 6452 (colonne B) correspond aux comptes 64523; 645211;645212;645213 dans la colonne H
    → Un compte peut s'observer plusieurs fois dans le tableau 2

    Merci de l'intérêt que vous porterez à ma requête.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par morgan75 Voir le message
    qui peuvent être partiellement ou totalement équivalentes
    Il va falloir définir cette notion de manière plus précise que par un exemple.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Bonjour,

    Pour index/equiv on trouve très facilement de bons tutoriels sur Internet.

    Pour la recherche de la racine de ton compte dans un autre tableau, il faut employer la fonction "gauche" qui te permet de ne travailler que sur la partie gauche de ta valeur.

    Si tes comptes se trouvent plusieurs fois dans le deuxième tableau, que souhaites-tu faire?
    - avec index/equiv tu ne pourras travailler que sur la première valeur du tableau 2
    - Si tu parles de compte et de budget, tu souhaites peut-être faire une opération (une somme?) sur tes données, dans ce cas il faut travailler avec une fonction comme SOMMEPROD :
    Exemple pour une somme : SOMMEPROD((GAUCHE(Tableau2[n° compte],4)=racine du tableau1)*Tableau2[budget])
    Exemple pour ceux qui n'ont pas de budget : SOMMEPROD((GAUCHE(Tableau2[n° compte],4)=racine du tableau1)*(Tableau2[budget]=""))
    où Tableau2[xxx] représente la colonne xxx du tableau 2 (par exemple une plage H1:H15)

    Cordialement,

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Merci pour avoir répondu aussi rapidement.

    Menhir, je me doutais qu'un simple exemple ne serait pas suffisant pour comprendre le problème. Je te fais parvenir le fichier ou se trouve les 2 tableaux sur le même onglet "feuill1".
    En fait il va falloir comparer les 2 séries de comptes des 2 tableaux et lorsque dans le tableau 1 le compte est qualifié par NI (non incorporable), tous les comptes du tableau 2 qui disposent de la même racine devront être qualifiés de NI.
    Si en effet, Virginie 2, Index/equiv ne se limite qu'au 1er enregistrement identifié dans la colonne, il ne s'agit pas de la bonne formule.
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Est-ce qu'on peut dire que dans ton premier tableau les numéros de compte se limitent à 5 chiffres ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Ces comptes "références" du tableau 1 vont de 2 à 8 caractères.

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Avec une telle variabilité, je ne vois pas comment ce serait possible sans utiliser de macro VBA.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Une solution, peut-être, mais la formule risque d'être un peu complexe, ce serait de traiter les différents cas un par un en les imbriquant :
    Rechercher la racine avec 2 caractères dans la colonne B du tableau 1
    si on n'a pas d'erreur (on l'a trouvé dans le tableau 1), prendre la valeur de la colonne D
    sinon rechercher avec 3 caractères
    etc...
    Il faut ainsi imbriquer les fonctions :
    - SIERREUR : pour voir si on trouve la racine dans le tableau 1
    - INDEX/EQUIV : pour trouver la racine dans la colonne B et renvoyer la valeur de la colonne D
    - GAUCHE : pour extraire la racine des valeurs de la colonne G

    ça doit pouvoir se faire, mais ce serait surement plus simple s'il y avait une règle pour connaitre la longueur de la racine.
    Et pour le coup c'est probablement pas plus compliquer de traiter ça avec une macro.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    contrôleur gestion
    Inscrit en
    Septembre 2014
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : contrôleur gestion

    Informations forums :
    Inscription : Septembre 2014
    Messages : 53
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    je voulais vous remercier pour vos conseils. Je me suis inspiré des fonctions proposées par Virginie 2 et j'ai réalisé une imbrication avec des NB.SI.ENS() et des GAUCHES(). Cela semble marcher dans tous les cas de figure enfin jusqu'à des racines de 11 caractères mais la formule n'est pas glamour .... Je vous joins le fichier
    Fichiers attachés Fichiers attachés

  10. #10
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    En apprenant des rudiments de VBA, tu pourrais créer une fonction plus propre en utilisant une fonction InStr dans une boucle For Each.

    Cette fonction te renvoie le numéro de ligne en y rentrant la racine de recherche et la zone de recherche.
    Ou 0 si elle ne trouve rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function COUCOU(MaValeur as String, MaZone as Range) as Long
        Dim MaCell as Range
        COUCOU = 0
        For Each MaCell in MaZone
            If InStr(MaCellule.Value,MaValeur)=1 Then
                COUCOU = MaCellule.Row
                Exit Function
            End If
        Next MaCell
    End Function
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  11. #11
    Membre expert

    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2012
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 564
    Points : 3 554
    Points
    3 554
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Bravo pour la formule puisque tu as trouvé une réponse à ton problème.
    Si tu la trouve trop longue (ou peu glamour ?) et si tu ne veux pas passer par du VBA, la cellule matricielle ci-dessous à écrire en J8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CHOISIR(SOMME(1*(SIERREUR(CHERCHE($B$8:$B$270;H8);0)=1)*($D$8:$D$270="NI"))+1;"";"NI")
    à valider par Ctrl + Maj + Entrée et à recopier vers le bas te donne les mêmes résultats que ta formule à la présentation près (elle évite une longue liste de FAUX).
    Cordialement
    Claude

Discussions similaires

  1. [AC-2007] Comment convertir une piece jointe en adresse pour un tranfert de données
    Par Hervé40 dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/09/2009, 21h25
  2. pas de tranfert de données en ajax
    Par lrgtk dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2008, 01h57
  3. tranfert de donnée de input à input (type texte)
    Par nicerico dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/10/2006, 17h16
  4. Réponses: 1
    Dernier message: 20/07/2006, 15h42
  5. Tranfert de données d'une base Oracle vers PostGre
    Par Elois dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/01/2004, 18h08

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