Report d'info d'un classeur à un autre avec tri

J

jacky

Guest
salut à tous,

je dispose de deux classeur cl1 et cl2.
le cl2 doit être renseigné automatiquement dès que le cl1 est rempli.

Les informations se trouvent dans le cl1 sur la feuille "feuil1" de la manière suivante:
A2= date
B2= libellé
F2= montant

Donc, le cl2 doit reprendre les infos du cl1 pour les disposer de la même manière et de le faire que si le montant est renseigné.
Il faut savoir que la colonne F du cl1 n'est pas toujours renseigné. Il faut donc rechercher les cellules de la colonne F non vide.

merci à celui qui pourra me résoudre ce problème
 
F

Filoo

Guest
Salut jacky

J'espère avoir bien compris ton problème, et voici ma piste (qui vaut ce qu'elle vaut sachant que je débute en vba)

En partant de l'hypothèse que la forme de ton classeur 2 soit identique de celle de ton classeur 1 pour les colonnes A,B,F

Une première piste serait d'effectuer un test sur le contenu des cellules du classeur 1 et suivant le résultat de ce test , coller ou non le contenu :
Exemple:

Dans la cellule F3 du classeur 2 écris la formule suivante:

=Si([Classeur1]Feuil1!$F3 <>"";[Classeur1]Feuil1!$F3;"")

Tu peux étirer cette formule .

Je ne peux t'en dire plus........ si tu ne m'en dis pas plus!!

Bon courage et A+
 
J

jacky

Guest
Salut Filoo,

merci de me répondre!

l'info supplémentaire:
La cellule F2 du classeur 2 doit rechercher dans la colonne F du classeur 1 une valeur en commençant par la cellule F2. Dès que la formule trouve cette valeur, il renvoit les informations qui se trouvent dans la cellule A2, B2 et F2 réspectivement dans le classeur 2.

Il se peut que dans le classeur 1, la colonne F ne soit renseigner qu'une fois sur deux.

Exemple:
Dans le classeur 1:
A2=01/01/04
B2=essai
F2=12
sur la ligne 3 il n'y a rien
A4=02/01/04
B4=essai 1
F4=10

Ce que je veux trouver dans le classeur 2:
A2=01/01/04
B2=essai
F2=12
A3=02/01/04
B3=essai 1
F3=10

Dans le classeur 1, les infos de la colonne F ne se suivent pas. Par contre, dans le classeur 2, il faut que les informations provenant du classeur 1 se suivent.

Important: les infos sont transférées dans le classeur 2 à la condition que dans le classeur 1 il y ait un montant dans la colonne F.

merci.
 
F

Filoo

Guest
Ok, dans ce cas ma formule ne s'applique pas.
J'ai une solution, qui n'est sans doute pas la meilleure mais qui devrait marcher:
Attention je part du fait que tu connais le nb de ligne de ta base de données (variable NB), si ce n'est pas le cas , je te donnerais le code



sub MaMacro (NB)

Dim cpt1 as Integer
Dim cpt2 as Integer



For cpt1 = 0 To NB

Sheets("Feuil1").Select
Range("F2").Select
ActiveCell.Offset(cpt1,0).Select

If ActiveCell.FormulaR1C1 <> "" Then

Range("$F" & cpt1).select
Selection.copy
Sheet("Feuil2").select
Range("F2").Select

boucle:
ActiveCell.Offset(cpt2 ,0 ).Select

If ActiveCell.FormulaR1C1<>"" Then
cpt2 = cpt2 + 1
GoTo boucle

Else: Selection.PasteSpecial Paste:=xlValues, _
Operation:=xlNone, SkipBlanks:=False, _
Transpose:=False
Application.CutCopyMode = False
End If

End If

Next cpt1

End Sub


Voilà , j'espère ne pas avoir fait de fautes.... Ce code ne te copiera 'que' les cellules dela colonne F... je suis un peu feinéant dsl... et je n'ai plus le temps.... mais dis moi si cela te suffit (et si ca marche -sic-) , si ce n'est pas le cas , je prendrai plus de temps demain !

Salut
 
R

ramassala

Guest
Salut,

Un conseil avant tout: lorsqu'on débute ou connait pas bien excel et ses fonctions avancées (et pas encore expertes) comme moi, il faut essayer de travailler l'aide qui est super bien faite!!

Sinon jacky ta soluce est simple etant donné que ta structure est la meme dans les deux classeurs:
je suppose que tu importes tes data en cl1
fixe une ligne ou tu as les libellés (a priori L2)
copie ta base de valeurs en dessous
filtre personnalisé avec "non vides" comme choix
place toi en B 3 par exple et Ctrl+*
Ctrl +C
Cl2 et L2 coller.

Ca prend exactement pour moi moins de 10 sec!!!

Si tu veux vraiment faire une macro tu fais exactement la meme chose mais avant tu fais un enregistrement de macro et clique sur "stop" (menu qui apparait lorsque tu enregistres une nouvelle macro) apres avoir coller.
Tu fais Alt + F11 et tu as le code VBA!!

Bon courage
 
J

jacky

Guest
Salut Filoo,

Je ne sais pas comment faire pour utiliser la macro que tu m'as donné.
le classeur dans lequel je prend les données s'appelle: "531143"
et celui qui ressoit les données: "543168"

Dans les deux classeurs, la feuille s'appelle "janv"

Si tu peux me donner plus d'information pour l'utilisation de ta macro se serait bien.
Car je ne sais pas utiliser le VBA.

merci d'avance!!
 
M

Michel_M

Guest
Salut Jacky, Filoo, Ramassala et le Forum

Jacky,

Lis la charte: il est inutile et peu pratique pour le contributeur de retrouver la même demande sous des posts différents sous prétexte que tu n'as satisfaction 6 heures après ta demande.


Ci joint proposition à adapter à ton cas

Michel
 

Pièces jointes

  • collecte.zip
    11.5 KB · Affichages: 21
  • collecte.zip
    11.5 KB · Affichages: 20
  • collecte.zip
    11.5 KB · Affichages: 19
M

Michel_M

Guest
Re,

Comme d'hab, j'avais oublié les points dans les "with/ end with"

Excuses moi
 

Pièces jointes

  • collecte2.zip
    11.9 KB · Affichages: 30
  • collecte2.zip
    11.9 KB · Affichages: 27
  • collecte2.zip
    11.9 KB · Affichages: 26
F

Filoo

Guest
Salut à tout le monde

Jacky , pour programmer des macros en vba il faut ouvrir le Visual Basic Editor . Pour l'ouvrir fait 'Outils \ Macros \ Visal Basic Editor' ou utilise le raccourci clavir Alt+F11.

Afin d'apprendre la programmation tu peux (très vivement conseillé ) utiliser l'Enregistreur de macro, 'Outils \ Macros \ Nouvelle Macro ' .
Cet outil te permet d'enregistrer et de traduire en language VBA toutes les actions que tu feras 'manuellement' pendant l'enregistrement.
Tu pourras donc apprendre par toi même .... très pratique pour les actions simples du genre copier-coller, Format de cellule (changement de police...) ...

Perso, cela fait maintenant un mois que j'apprends à programmer en vba et ce uniquement à l'aide de l'enregistreur et de l'aide de'Excel ..... et plus épisodiquement celle des utilisateurs de ce forum (de loin la plus efficace et conviviale)

Bonne journée

PS: Jacky, un ptit merci pour Michel qui t'as bien maché le boulot nous permettrais de savoir si cela te conviens ! ( et ca fait toujours plaisir...)
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 367
Membres
103 528
dernier inscrit
maro