Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2007, 21h20   #1
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 0
Points : 0
Par défaut copier un tableau de valeur depuis un pdf

bonjour,

je voudrais copier un tableau de valeurs a partir d un document pdf et coller le tableau sur excel en utilisant la fonction convertir

il faudrait :
-supprimer toutes les virgules
-demander a selectionner la plage
-selectionner les cellules contenant du texte et les couper vers la colonne la plus a gauche
-selectionner les cellules contenant des nombres et les couper vers la colonne la plus a droite
-et cela pour l ensemble des lignes

pouvez-vous m aider s il vous plait (l ensemble du code VBA)
merci d avance
gabvba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 21h29   #2
Membre éprouvé
 
Inscription : juillet 2004
Messages : 504
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 504
Points : 449
Points : 449
Envoyer un message via MSN à helios77
Je suis désolé mais le format PDF est format spécila qui à ma connaissance ne peut aps s'ouvrir avec autre chose qu'Acrobat Reader
helios77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 13h38   #3
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 0
Points : 0
Par défaut decaler les cellules

ok , disons que j'arrive a coller les cellules sur excel

mon probleme est la mise en forme sous excel :, c'est a dire, selectionner les cellules dans excel, deplacer les celulles d' une meme ligne vers la colonne la plus a droite , pour les celulles contenant les chiffres, et deplacer les celules contenant le texte vers la colonne la plus a gauche
gabvba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 13h57   #4
Membre éprouvé
 
Inscription : juillet 2004
Messages : 504
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 504
Points : 449
Points : 449
Envoyer un message via MSN à helios77
Pour avoir une idée des commandes à utiliser ,je te conseille de passer par l'éditeur de macro pour tout ce qui est mise en forme

je vois à peu près ce que tu veux faire mais c'est pas super clair quand même
la colonne la plus à droite, çà veut dire quoi pour toi ??
Les données qui étaient dans cette colonne, tu en fais koi ???
tu les écrases, tu les redécales ????

Faut-il toutes les redécaler du fait du "coupage" des celluls ???

Ton tableau est-il de taille variables ou fixe ?
Peut-il contenir des lignes vides si il est de taille variable ???

Donne moi au moins l'info si il est de taille fixe ou non, si il contient des celluls vides ou non et aussi explique moi si toutes les cellules vides après le "coupage" doivent être supprimées afin que ton tableau tiennet en un seul bloc ???
helios77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2007, 20h19   #5
Invité de passage
 
Inscription : mars 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 5
Points : 0
Points : 0
Par défaut precisions

chaque ligne contient un nombre variable de cellules texte, suivi d' un nombre (a peu pres) fixe de cellules de nombres......(c est donc une pyramide....difforme et chaque ligne formee de cellules de texte , suivi de cellules de nombres. Je veux isoler les cellules de nombre ; je veux obtenir une colonne bien alignee de nombres (bloc droit).

Je peux t' envoyer un fichier si tu peux me communiquer une adresse mail.

merci pour ton aide.
gabvba est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2007, 16h47   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Citation:
Envoyé par gabvba
Je peux t' envoyer un fichier si tu peux me communiquer une adresse mail.
Non, maéis tu peux le joindre après l'avoir "Zippé" (icône trombone)
Pour ton pb, je ne vois guère d'autre solution que celle-ci
Déterminer quel est la dernière colonne renseignée de ta base, quelque soit le N° de ligne, texte ou nombres confondus. Tu ajoutes 2 à ce No de colonne :
Code :
1
2
    DerniereColonne = Range("A1").SpecialCells(xlCellTypeLastCell).Column
    NewCol = DerniereColonne + 2 'On garde DerniereColonne pour plus tard
C'est sur cette colonne que tu mettras la première colonne des nombres.
Ensuite,
Citation:
Envoyé par Tu
suivi d' un nombre (a peu pres) fixe de cellules de nombres
Ce n'est pas un nombre fixe, donc d'un nombre indéterminé de cellules de nombres
Tu détermines la dernière ligne renseignées de ta feuille
Code :
    DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
Maintenant, tu peux parcourir la feuille ligne par ligne pour repérer les cellutes contenant les valeurs et les coller au bon endroit
Code :
1
2
3
4
5
6
7
8
9
10
11
12
'd'après la structure de ta base, tu n'as pas d'entête -> on commence à la ligne 1
For NoLigne = 1 to DerniereLigne
     ColNum = NewCol 
     'ColNum sera le No de colonne de la dernière "valeur" rencontrée sur la ligne
     For NoCol = 1 to DerniereColonne 'parcours de la ligne col par col
         If cells(NoLigne,NoCol).value <> 0 then
               Cells(NoLigne,ColNum) = cells(NoLigne,NoCol)
               ColNum = ColNum + 1 'on incrémente le No de la colonne "Coller"
               Cells(NoLigne,ColNum) = "" ' On nettoie la cellule (voir plus loin **)
         endif
     Next
Next
Ainsi les "valeurs" ont toutes été collées à partir de la colonne NewCol
Pour coller le texte sur la colonne suivant les nombres, il ne te reste plus qu'à connaître la première colonne vide après les nombres : on reprend la formule de tout à l'heure
Code :
    NewCol = Range("A1").SpecialCells(xlCellTypeLastCell).Column + 1
On copie la plage ne contenant plus que le texte. Et comme en faisant NewCol = DerniereColonne + 2, on a isolé le texte des nombres par une colonne vide, on peut donc utiliser CurrentRegion pour déterminer la plage du texte (puisqu'on a nettoyé les cellules des nombres) il ne reste qu'à le faire
Code :
    Range("A1").currentRegion.copy destination:=Range(1,NewCol)
Il ne te reste plus qu'à supprimer les colonnes copiées (**) et là encore, comme tout à l'heure on a pris pour 1ère colonne des nombres DernièreColonne + 2, on peut supprimer les colonnes de A à DerniereColonne + 1
Code :
    Range(Cells(1, 1).Column & ":" & Cells(1, DerniereColonne+1).Column).Delete Shift:=xlToLeft
Je réalise que j'ai tout fait...
Bien sûr je n'ai pas testé, alors fais ça pour moi mais sur une copie de ton fichier
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h51.


 
 
 
 
Partenaires

Hébergement Web