Extraire un nom propre qui se deplace d’une cellule a l'autr

Bonjour la communauté,

Je suis novice sur excel et apés pas mal de recherche je voudrais pouvoir progressé sur un tableau de statistique que je met au point pour le boulot.

Je vais essayé d’être explicite et vous ferez suivre un fichier pour être précis.

Je recupere d’un fichier PDF en copier coller un planning journalier et je voudrais en extraire sur chaque cellule que le nom et prénom qui se répète mais n’est jamais a la meme place.

Une fois ce nom extrais dans une colonne je pourrais utiliser la fonction index+equiv pour marquer le nom d’un index.

Le planning lui ne varie jamais c’est toujours la même structure.

Y a t il au plus évident pour moi svp une formule ou avec du boulot un code VBA !!!

merci pour votre aide

Arno

Bonjour Arno69000

Un peu fastidieux compte tenu que le nombre de caractère avant les noms n'est pas identique. Seul moyen c'est de repérer un caractère spécifique exemple le "-". Donc à insérer juste avant le nom.

Ensuite appliquer la formule suivante :

=SI(ESTERREUR(STXT(B19;TROUVE("-";B19)+2;9999));"";STXT(B19;TROUVE("-";B19)+2;9999))

dans la cellule juxtaposée.

voir fichier modifié joint

Merci Et1000lio,

je peux essayer comme ça et avec la fonction convertir aussi qui sépare les mot d’une cellule suivant un signe mais gros travail pour mettre un signe devant chaque nom comme indiqué sur le planning il faut le faire pour tout les jours et les nuits aussi !!! soit 62 planning au mois !!!

Je sais pas si ça peut aider mais un répertoire de nom existe.

merci encore et1000lio pour ta réponse rapide

arno

Bonjour,

Je sais pas si ça peut aider mais un répertoire de nom existe.

En m'appuyant sur la liste en K6:K16 et en considérant que les plages à traiter sont toujours les mêmes :

Sub noms()
    Dim listeNom, c As Range, i As Long
    listeNom = Sheets("Feuil1").[K6:K16].Value    ' à adapter
    For Each c In Union([B9:B23], [E9:E23])    ' à adapter
        For i = 1 To UBound(listeNom)
            If listeNom(i, 1) = "" Then Exit For
            If InStr(c, listeNom(i, 1)) Then
                c.Offset(, 1) = listeNom(i, 1)
                Exit For
            End If
        Next i
    Next c
End Sub

Il ne doit pas y avoir de trou dans la liste de noms, j’arrête de la balayer au 1er vide pour accélérer.

Mais tant qu'à faire, si c'est pour remplir ton tableau en K1 autant dire ce que tu dois y mettre. La macro peut peut-être s'en occuper plutôt que d'y mettre des formules à rallonge.

eric

Merci eric problème résolu.

Effectivement je remplir mon tableau numéro deux pour entrer mes statistique en tableau numéro 3.

mes index correspondent bien a des taches que font chaque agents.

1234 correspond a une tache

5678 a une autre et ainsi de suite .

Je vous fais suivre les tableaux.

Arno

Tu es sûr que tu es sur excel 2010 ? On dirait que le fichier est passé sur un Mac.

Si c'est le cas il vaut mieux le préciser systématiquement, certaines fonctions sont incompatibles.

J'ai jeté un oeil sur ton fichier.

Mieux vaut conserver les formules. Elles ne sont ni compliquées, ni gourmandes.

Autant que tu gardes la maîtrise la plus complète possible sur tes stats.

A moins qu'une partie ne t'embête. Précise laquelle si c'est le cas.

eric

Slt Eric,

Oui en effet je bosse au taf sur pc et a la maison j’ai les deux mac et pc j’y ferais attention dans les prochain poste.

Eric le nombre de plages(donc nombre de tableaux)n’est pas limité en macro??? j’ai quand même 62 tableaux !!!

Merci encore et je ferais évoluer par la suite le programme pour l’instant je reste comme ça pour un meilleur contrôle tu as raison.

arno

Bonjour,

Heuuuu...

64 tableaux sur la même feuille (si c'est le cas il fallait le préciser et mettre un fichier de travail en concordance) ou 64 feuilles identiques à celle-ci ?

Les macros c'est assez rigide, les feuilles doivent être précises et définitives, et les données ne plus bouger.

eric

oui Eric les tableaux seront fixe comme je le disais dans mon premier post le planning ne varie jamais.

seul les données vont rentrer a l'intérieur avec un copier collé venant de pdf qui eux aussi sont toujours les meme.

une fois les tableaux remplis ça bouge plus !!!

Par hasard une macro qui copie et colle les infos de plusieurs pdf ranger dans un dossier pour aller dans mon classeur ça pourrais se faire ou je pousse un peu trop loin ???

merci Eric.

Arno

64 tableaux sur la même feuille ou 64 feuilles identiques à celle-ci ?

Par hasard une macro qui copie et colle les infos de plusieurs pdf ranger dans un dossier pour aller dans mon classeur ça pourrais se faire ou je pousse un peu trop loin ???

Récupérer dans un pdf je ne sais pas faire, ça ne veut pas dire que ça n'existe pas.

Mais même si c'était des xls je n'aurais pas le temps. il faudra démarrer un autre topic.

eric

ok merci eric.

Bjr eric,

juste une précission sur le code je peux rentrer autant de plage que je veux ???

merci

Arno

Bonjour,

Si tu parles des plages à traiter, de mémoire car ça commence à dater : oui.

eric

Eric au bout d’une trentaine de plage qui fonctionne super bien si je met une plage de plus j’ai ce message qui s’affiche et dans ton code union qui est surligné par le debogeur.

ERREUR DE COMPILATION

Nombre d’arguments incorrect ou affection de propriété incorrecte

arno

Bonjour,

Ah ben oui, union est limité à 30 paramètres.

Tu peux faire F1 sur une fonction quand tu rencontres une erreur. C'est plus rapide que d'attendre une réponse sur un forum.

Fait-le en plusieurs fois :

set pl= union(plage1,plage2,..., plage30)

set pl= union(pl, plage31,...)

Et tu rencontrera peut-être une autre limitation qui est celle de taille de la chaine qui liste tes plages dans pl.address

eric

Rechercher des sujets similaires à "extraire nom propre qui deplace autr"