convertir pdf en excel et macro

  • Auteur de la discussion kossivic
  • Date de début

kossivic

Habitué
j'ai converti un tableau PDF en excel, en conclusion le nombre de "nom prénom" ne correpond pas au "reference". Je cherche une formule qui peux renvoyer dans les cellules "nom prénom" le nom correspondant à leur référence et le mettre en macro.
comment faire?
j'ai essayé ceci =SI(ET((B7=C5);(B8=C6));B5;"" ) mais je tiens à ne pas toujours avoir B5 comme réponse mais quelque chose comme "le cellule 2X au dessus de B7 "B(7-2)" ce que je n'arrive pas à faire.
Merci de m'aider
 

kossivic

Habitué
je sais qu'il existe des programmes pré écrite pour cela mais mon problème ne nécessite pas tout un programme,
Alors de l'aide s'il vous plait
 

kossivic

Habitué
j'ai déja trouvé ceci:
For i = 2 to 945
x=i
y=i+1
z=i+1
if ((cells(x,1)="" ) and (cells(z,3 <>"" )) then
activeCelles.formulaR1C1 = cells(y,1)
elseeif selection. autfilter field : =2, criterial:=x
cells("m7" ).select
end if
next i
et cela ne marche pas
 

kossivic

Habitué
j'ai réussi à convertir pdf en excel, maintenant je chercher à faire ceci:
Pour une même personne à qui et pour qui on a payé un certain montant pendant une période; écrire dans une colonne "solde" "ok" si la somme est comprise entre -2 et 2 et "not ok si elle est autre.

je ne sais pas comment attaché mon fichier

SVp aider moi
 

zeb

Modérateur
Kossivic, la loi régissant la cat' Programmation est stricte, mais c'est la loi !

■ Si tu veux publier du code, utilise la balise [ code].
■ Si tu as fini par trouver une solution, merci de la publier pour tous.
■ Ne confonds pas bureautique, Excel et programmation !

Plus d'info dans le règlement.

___________________________________


Pour répondre à ta question, même si c'est de la bureautique :sarcastic:

Dans la colonne "solde", mets une formule qui pourrait ressembler à ça en français : Si -2 <= Somme Et Somme <= 2 Alors Ok Sinon Not Ok.
Et à ça en Excel :
Code:
=Si(Et(-2<=Somme(    );Somme(    )<=2);"OK"; "Not Ok")
 

kossivic

Habitué
Merci de ton indulgence Zeb. il est vrai que je confond tout parce que je ne connais pas.
 

kossivic

Habitué
la formule est juste je t'en remercie
Mais il existe trois autres conditiions avant l'application de cette formule: ce sont
1. pour une même personne (colonne nom) qui peut aller de 1 à 40 X nombre de personnes inscrites
2. il est payé pendant une période donnée (colonne date)
3. correspondant à différente source (colonne source)
alors voir Si(Et(-2<=Somme( );Somme( )<=2);"OK"; "Not Ok" ) (colonne solde)
le tout à répéter sur une boucle de N ligne d'où l'idée macro

P.S. comment vous envoyer mon ficher?
 

zeb

Modérateur
On n'envoie pas de fichier. Un fichier peut contenir des virus, volontairement ou pas, donc pas d'échange de fichiers !!! :fou:

J'ai l'impression qu'il va te falloir aller voir en cat' Windows/Logiciel pour y apprendre à te servir d'Excel.

Ecris la formule pour une ligne, puis avec la souris, tire sur le petit carré noir en bas à droite de la cellule pour étendre cette formule à plusieurs lignes.
 

kossivic

Habitué
Je n'explique peut être pas bien mon cas.
J'ai une niveau moyen en utilisation excel mais mon problème actuel dépasse ce niveau.
je cherche à automatiser ce que je fait régulièrement pour gagner du temps.
En effet dans une feuille où j'ai cumulé deux sources de données (une dépense et l'autre recette) relatif à des personnes , au cours d'une période donnée (janvier à décembre): je dois vérifier si j'ai reçu ce que j'ai payé pour une période.
Donc je pense que tirer la formule faira varier les lignes et/ou colonne. Même si je fixe par "$" la somme ne correspond jamais au nombre de personnes selectionné.
comment faire?
 

Freeman23

Expert
Je pense que le plus simple pour effectuer cela serait de passer dans un troisième onglet ou tu reportes l'ensemble des noms de personne.

Ensuite en utilisant la fonction BDSOMME tu devrais pouvoir récupérer l'ensemble des dépenses dans une colone, et les recettes dans une autre. Puis faire une magnifique différences et avec une mise en forme conditionnelle faire apparaitre en couleur les valeurs différents de 0.
 

kossivic

Habitué
merci Freeman23,
J'ai pensé à cela et j'ai été un peu plus loin avec un tableau croisée dynamique par nom; date; sources avec les montant (recette dépense).
mais j'ai près de 42 000 lignes et je dois recommencer la verification sur 500 pages et le mois prochain rebelotte Pfffffffffffffffffffffffffffff.
l'automatiser sera un gain de temps fou et différencier les réponses (0) des autres serait encore mieux.
si vous le permetter voici à quoi ressemble mon tableau

NOM DATE SOURCES MONTANT SOLDE

aa l 01/2008 l recet l 2 l ok
aa l01/2008 l dép l -2 l ok
aa l02/2008 l recet l 1,5 l not ok
aa l02/2008 l dép l -2 l not ok
aa l02/2008 l recet l 0,3 l not ok
bb
bb
bb
etc...
1. pour une même personne (colonne nom) qui peut aller de 1 à 40 X nombre de personnes inscrites
2. il est payé pendant une période donnée (colonne date)
3. correspondant à différente source (colonne source)
alors écrire dans la colonne solde voir Si(Et(-2<=Somme( );Somme( )<=2);"OK"; "Not Ok" ) (colonne solde)
le tout à répéter sur une boucle de N ligne d'où l'idée macro
 

kossivic

Habitué
Lorsque j'enregistre en macro voici ce que je fais, En d'autre terme comment le généraliser et l'automamtiser?


Sub pe()

for i=1 to 42000
Selection.AutoFilter Field:=1, Criteria1:="NEMCSIKANDREA"
Selection.AutoFilter Field:=3, Criteria1:="mars-04"
Range("E11885:E20489").Select
Range("E20489").Activate
ActiveCell.FormulaR1C1 = "=IF(SUBTOTAL(9,R[-8604]C:R[-1]C)" , then
Range("L11885").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="mai-04"
Range("E20489").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[-8604]C:R[-1]C)"
Range("L12977").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="avr.-04"
Range("L12265").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="févr.-04"
Range("L11484").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3
Range("L11326").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=1, Criteria1:="NENDAKABIKAANGADAA"
Range("E10678").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=6
Range("E20489").Select
Selection.ClearContents
Range("E10678").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.AutoFilter Field:=3, Criteria1:="mars-04"
ActiveWindow.SmallScroll Down:=-12
Range("L11283").Select
ActiveCell.FormulaR1C1 = "vide"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="mai-04"
Range("L12138").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=11
Selection.AutoFilter Field:=3, Criteria1:="mars-04"
Range("L11283").Select
ActiveCell.FormulaR1C1 = "not"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="mai-04"
Selection.AutoFilter Field:=3, Criteria1:="août-04"
Selection.AutoFilter Field:=11, Criteria1:="="
Selection.AutoFilter Field:=3, Criteria1:="juin-04"
Range("L12559").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="août-04"
Range("L13322").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="avr.-04"
Range("L11784").Select
ActiveCell.FormulaR1C1 = "not ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="févr.-04"
Range("L10898").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3, Criteria1:="janv.-04"
Range("L10678").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown
Selection.AutoFilter Field:=3
Range("L12922").Select
ActiveCell.FormulaR1C1 = "ok"
Selection.FillDown

next i
End Sub
 

KangOl

Grand Maître
merci de respecter les règles de mise en page et d'utiliser la balise
Code:
 

kossivic

Habitué
Code:
sub()
 for i=1 to 42000 
    Selection.AutoFilter Field:=1, Criteria1:="NEMCSIKANDREA" 
    Selection.AutoFilter Field:=3, Criteria1:="mars-04" 
    Range("E11885:E20489" ).Select 
    Range("E20489" ).Activate 
    ActiveCell.FormulaR1C1 = "=IF(SUBTOTAL(9,R[-8604]C:R[-1]C)" , then 
    Range("L11885" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="mai-04" 
    Range("E20489" ).Select 
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[-8604]C:R[-1]C)" 
    Range("L12977" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="avr.-04" 
    Range("L12265" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="févr.-04" 
    Range("L11484" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3 
    Range("L11326" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=1, Criteria1:="NENDAKABIKAANGADAA" 
    Range("E10678" ).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    ActiveWindow.SmallScroll Down:=6 
    Range("E20489" ).Select 
    Selection.ClearContents 
    Range("E10678" ).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.AutoFilter Field:=3, Criteria1:="mars-04" 
    ActiveWindow.SmallScroll Down:=-12 
    Range("L11283" ).Select 
    ActiveCell.FormulaR1C1 = "vide" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="mai-04" 
    Range("L12138" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=11 
    Selection.AutoFilter Field:=3, Criteria1:="mars-04" 
    Range("L11283" ).Select 
    ActiveCell.FormulaR1C1 = "not" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="mai-04" 
    Selection.AutoFilter Field:=3, Criteria1:="août-04" 
    Selection.AutoFilter Field:=11, Criteria1:="=" 
    Selection.AutoFilter Field:=3, Criteria1:="juin-04" 
    Range("L12559" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="août-04" 
    Range("L13322" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="avr.-04" 
    Range("L11784" ).Select 
    ActiveCell.FormulaR1C1 = "not ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="févr.-04" 
    Range("L10898" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3, Criteria1:="janv.-04" 
    Range("L10678" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
    Selection.AutoFilter Field:=3 
    Range("L12922" ).Select 
    ActiveCell.FormulaR1C1 = "ok" 
    Selection.FillDown 
 
next i 
End Sub
 

kossivic

Habitué
zeb, tu m'excuseras mais je ne comprends pas ce que tu me demandes de faire.
La formule "=month()" renvoi le mois en numéro; c'est à dire oct/2007=10 et oct/2008=10 aussi. Or en terme de date ce ne sont pas la même chose. Alors quelle formule appliquer pour les différenier?
 

zeb

Modérateur
:??: Quand t'ai-je demandé d'utiliser month() ?

Bon sinon pour comparer oct. 2007 et oct. 2008, tu peux faire :[fixed]month(date1) = month(date2) AND year(date1) = year(date2)[/fixed]

__________________


Et le modérateur me dit que tu as toujours un message privé à lire :o
 

kossivic

Habitué
En faite je ne cherche pas à comparer deux dates.
j'ai créer une référence
Code:
[Range("E1") = "=month(d1)"] 
Dans la colonne "D" il  y a les dates. je veux créer dans "E" la référence des dates afin de l'utililser plustard. 
il se fait que "month(01/10/2007)" donne 10; de même que "month(01/10/2008)" donne aussi 10

comment differencier "month(01/10/2007)" de "month(01/10/2008" pour ne pas avoir 10 dans les deux cas. Je ne cherche donc pas à comparer les deux dates.  ;)
 

zeb

Modérateur
Kossivic, Merci de lire le règlement. Et tes messages.

Comme cela fais 8 jours que mon dernier message reste non lu, je bloque ton accès jusqu'à ce que tu l'ais lu !

Vous devez être connecté pour voir les images.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 129
Messages
6 717 853
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut