[Excel] extraction de données

Bonjour,

je suis en train d'exploiter un tableau excel assez grand (environ 10000 lignes) et que je devrai faire souvent, il me faut donc automatiser mes extractions de données.

ce tableau provient d'un document pdf exporté en txt puis importé sous excel.
les données sont donc un peu dispersées.

Les données correspondent a des ingrédient introduits dans une pate.
Sur un ingrédient on peut avoir différents lots dans une meme pate
or la valeur qui m'intéresse est la somme sur tous les lots pour 1 pate. (sachant que j'ai un nombre inconnu de pate dans mon tableau et que le nombre de lot par pate est variable.)

Voila comment se présente ma colonne de valeur :

dsdv
dvd

vdv

21
54
564
24
45
214
cdcdscdc

dsfs

dsf

54
54
54
21
54
647
78
1323
.......................;;;

les caractères étant des chaines de texte placées un peu aléatoirement.

je voudrai sommer les nombres consécutifs et qu'il m'affiche dans une autre colonne la somme obtenue a chaque fois.

Si quelqu'un a des idées, sachant que je suis totalement novice en VBA.

Merci d'avance

ps 1 : la fonction NB() de Excel qui renvoie 1 si c'est un chiffre et 0 sinon pourrait etre utile

ps 2 : si c'est pas clair n'hésitez pas à demander des explications.

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour

    C'est sympa d'avoir un message comme çà !

    Le plaisir est aussi pour moi d'avoir partagé avec toi.

    à bientôt peut-être pour un nouvel échange.

    1. Contributeur
      bonjour

      est-ce ainsi que tu veux le résultat ?

      j'ai mis "<=>" entre les colonnes pour visualiser.

      dsdv <=> 0
      1dvd <=> 0
      <=> 0
      <=> 0
      vdv <=> 0
      <=> 0
      <=> 0
      21 <=> 21
      54 <=> 75
      564 <=> 639
      24 <=> 663
      45 <=> 708
      214 <=> 922
      cdcdscdc <=> 922
      <=> 922
      <=> 922
      dsfs <=> 922
      <=> 922
      <=> 922
      dsf <=> 922
      <=> 922
      54 <=> 976
      54 <=> 1030
      54 <=> 1084
      21 <=> 1105
      54 <=> 1159
      647 <=> 1806
      78 <=> 1884
      1323 <=> 3207
      1. Contributeur
        bonjour

        ou bien ceci :

        dsdv <=> 0
        1dvd <=> 0
        <=> 0
        <=> 0
        vdv <=> 0
        <=> 0
        <=> 0
        21 <=> 21
        54 <=> 75
        564 <=> 639
        24 <=> 663
        45 <=> 708
        214 <=> 922
        cdcdscdc <=> 0
        <=> 0
        <=> 0
        dsfs <=> 0
        <=> 0
        <=> 0
        dsf <=> 0
        <=> 0
        54 <=> 54
        54 <=> 108
        54 <=> 162
        21 <=> 183
        54 <=> 237
        647 <=> 884
        78 <=> 962
        1323 <=> 2285
        1. Bonjour

          en fait c'est la deuxième proposition dont j'ai besoin, je saurai me débrouiller après je pense.

          Sinon l'idéal serait de mettre des 0 partout sauf à la dernière somme de chaque série.
          1. Contributeur
            bonjour

            voici le tableau avec la formule qui est à recopier sur toutes les lignes (Ctrl + B avec sélection colonne).

            elle suppose qu'il y a une ligne titre et commence en ligne 2.

            (désolé pour la présentation, mais la suppression des espaces est pénalisante.)

            col A col B
            _______ | _____ |
            données | calcul | formule
            dsdv | 0 | =SI(ESTERREUR(CNUM(A2));0;CNUM(A2)+B1)
            dvd | 0 |
            | 0 |
            | 0 |
            vdv | 0 |
            | 0 |
            | 0 |
            21 | 21 |
            54 | 75 |
            564 | 639 |
            24 | 663 |
            45 | 708 |
            214 | 922 |
            cdcdscdc | 0 |
            | 0 |
            | 0 |
            dsfs | 0 |
            | 0 |
            | 0 |
            dsf | 0 |
            | 0 |
            54 | 54 |
            54 | 108 |
            54 | 162 |
            21 | 183 |
            54 | 237 |
            647 | 884 |
            78 | 962 |
            1323 | 2285 |

            Pour n'avoir que la dernière somme, il faut une troisième colonne
            avec la formule en ligne 2 à recopier jusqu'en bas:

            =SI(ESTERREUR(CNUM(A3));CNUM(B2);"")

            bon courage si c'est ce que tu voulais.
            1. Je t'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaime!!!

              c'est exactement ce qu'il me fallait et pas besoin d'aller sur VBA en plus

              un très très grand merci, ca me sauve la vie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

              Tibal