Tableau d'association

Résolu
DR.Morpheus Messages postés 502 Statut Membre -  
DR.Morpheus Messages postés 502 Statut Membre -
Bonjour,

sous exel ou sous openoffice

j'ai un tableau dans ce genre la :

- A B C D
1 * - * -
2 - * - -
3 - * * -
4 - - - *

je souhaiterai extraire les données automatiquement et afficher ceci :

Lettre Chiffre
A 1
B 2
B 3
C 1
C 3
D 4

je pense qu'il faut faire une sorte de =recherchev() mais je ne sai pas comment l'écrire

merci a l'avance de votre aide

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    j'ai cherché en vain une formule matricielle mais...
    donc par VBA avec excel restition colonne F,G
    Sub transposer()
    lig = 65536
    col = "IV"
    nbre = Application.CountIf(Range("A1:D4"), "*")
    For cptr = 1 To nbre
        adresse = Cells.Find("*", Cells(lig, col), , , xlByColumns).Address
        col = Range(adresse).Column
        lig = Range(adresse).Row
        Cells(cptr, "F") = Chr(col + 64)
        Cells(cptr, "G") = lig
    Next
    
    End Sub


    maquette
    https://www.cjoint.com/?0mBkmmofoKU
    0
    1. DR.Morpheus Messages postés 502 Statut Membre 83
       
      alors merci beaucoup pour ce script qui fais en grande parti ce que je souhaite cependant mon tableau plus haut était un exemple de colonne et ligne "ABCD" et "1234" sont des données texte
      autre exemple:

      ----------|marie|Bernard|Charles|Denis|
      |lapins|---*---- |---*------|---*------|---*----|
      |poule|----------|---*------|----------|--------|
      |choux|---*------|---*-----|---*------|---*----|
      |chien|---*------|----------|----------|---*----|

      malheureusement étant en début de formation informatique je n'est pas encore abordés le VBA
      d'après ce que je peu comprendre a première vue c'est que "col" et "lig" corresponde a l'adresse des ligne et colonne tu tableau . donc logiquement il faudrait les remplacer par des données incrémentés par une boucle du genre col = A1 deuxième boucle col = B1 etc ...
      mais je ne sait pas comment l'écrire.

      je vous remercie encore de l'intérêt que vous porté a mon soucis . et merci de m'aider une fois de plus .
      0
    2. DR.Morpheus Messages postés 502 Statut Membre 83
       
      après quelques bidouillages je suis arrivé a comprendre le fonctionnement et as faire quelques chose qui correspond a ce que je cherchai . je ne doute pas une seconde que mon script n'est pas du tout conventionnel ^^ surtout pour le "=" mais bon voici le code si ça peu en aider quelques un :

      Sub transposer()
      lig = 65536
      col = "V"
      nbre = Application.CountIf(Range("B2:E5"), "§")
      For Cptr = 1 To nbre
      adresse = Cells.Find("§", Cells(lig, col), , , xlByColumns).Address
      col = Range(adresse).Column
      lig = Range(adresse).Row
      egale = "="
      Cells(Cptr, "G") = egale & Chr(col + 64) & 1
      Cells(Cptr, "H") = egale & "A" & lig
      Next

      End Sub


      merci énormément michel_m tu est mon sauveur du jour :) très joyeuses fêtes a toi .
      0
  2. DR.Morpheus Messages postés 502 Statut Membre 83
     
    merci énormément du temps que vous avez consacré à mon problème,

    je test votre script et reviens vers vous :)
    0