Placement sur dernière ligne

Bonjour à tous,

Je viens vers vous car malgré le fait que j'ai beaucoup lu sur la question, je ne suis toujours pas parvenu à trouver une solution applicable à mon cas. N'étant pas très très compétent en VBA, je prends donc le risque et lance un nouveau topic sur le sujet du placement sur la dernière ligne vide.

Voici mon cas :

Je travaille actuellement sur une macro qui fonctionne dont voici le code :

Sub NIP313()

j = 2

For i = 2 To 65536

If Application.Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("G" & i).Value = "313" And Application.Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("F" & i).Value = "6" Then

Application.Workbooks("P&L 2011.xls").Worksheets("Juin").Range("A" & j & ":K" & j).Value = Application.Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("A" & i & ":K" & i).Value

j = j + 1

End If

Next i

End Sub

Cette macro me permettra, lorsque j'en serai arrivé au résultat que je souhaite avec votre aide, de remplir automatiquement via un clic bouton la feuille "Juin" du classeur "P&L 2011", en ayant fait une sélection au préalable dans un 2ème classeur appelé "DEPENSES 2011", feuille "NIP Hotel". Vous l'aurez compris, elle importe toutes les lignes contenant le code "313" ainsi que "6", correspondant au mois de juin.

Cette macro fonctionne très bien, bien qu'à mon humble avis elle soit améliorable. Le hic, c'est que je souhaite créer un bouton par code (313, 314, 315...), et pouvoir ainsi importer les codes qui m'intéressent dans ma feuille "Juin".

J'ai donc par exemple une deuxième macro similaire, avec le code 314.

Le hic, c'est que lorsque exécute celle pour le code 313, puis celle pour le 314, les résultats pour 314 viennent écraser ceux du 313.

Voici donc ma question, qui je vous l'accorde, tardait à venir : quel code dois-je intégrer à mes macros pour que les résultats obtenus se collent à la suite de ceux déjà existants sur ma feuille ?

Je vous remercie d'avance pour votre aide !

ps : si je tarde à répondre je vous prierai de m'excuser, je vis en Polynésie Française, et j'ai 12h de jetlag avec la France !

Bonjour,

Idée à creuser sans doute ....

Sub NIP(Valeur As String)
Dim FinCible As Long, I As Long

For I = 2 To Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("A" & Rows.Count).End(xlUp).Row
 If Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("G" & I).Value = Valeur And Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("F" & I).Value = "6" Then
  With Workbooks("P&L 2011.xls").Worksheets("Juin")
   FinCible = .Range("A" & Rows.Count).End(xlUp).Row
   .Range("A" & FinCible & ":K" & FinCible).Value = Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("A" & I & ":K" & I).Value
  End With
 End If
Next I

End Sub
Sub touche1()

  Call NIP("313")

End Sub
Sub touche2()

  Call NIP("314")

End Sub

Bonjour Misterno et merci pour ta réponse.

Je ne parviens pas à faire fonctionner ton code, lorsque je l'execute à travers touche1() par exemple, ça ne me retourne rien dans mon tableau.

Je me suis permis de te copier en transformant mon second critère de mois en une variable que j'ai déclaré comme suit :

Sub NIP(Valeur As String, Mois As Integer)

Ainsi je fais appel à la fonction de la façon suivante :

Sub touche1()

Call NIP("314", 6)

End Sub

J'ai remarqué qu'en ne me servant pas des variables mais en mettant manuellement les valeurs (314 et 6 par ex), la fonction me renvoit une ligne, et remplace l'entete de mon tableau en se plaçant sur la 1ère ligne...

Tout n'est donc pas au point, des idées ?

Bonsoir

Sans fichier servant de base pas facile

Comment tu transmets tes paramètres ?

Comment tu les reçois ?

Dans la macro qu'en fait tu ?

Moi je ferais

Transmission

Call NIP("314", "6")

Réception

Sub NIP(Valeur As String, Valeur2 as String)

Et dans la macro

If Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("G" & I).Value = Valeur And Workbooks("DEPENSES 2011.xls").Worksheets("NIP Hotel").Range("F" & I).Value = Valeur2 Then

Et je pense qu'il faut rajouter 1 à

FinCible = .Range("A" & Rows.Count).End(xlUp).Row+1

FinCible = .Range("A" & Rows.Count).End(xlUp).Row + 1

Si pas ça joins les fichiers anonymisés, cela sera plus facile

Salut Banzai64 et merci également de ton aide.

J'étais justement entrain de me rendre compte qu'il manquait l'incrémentation !

j'ai appliqué ta solution et ça marche !

J'ai cependant une nouvelle question :

afin de ne pas alourdir mon classeur, j'aimerais qu'au lancement de celui-ci s'ouvre un Userform avec mes boutons d'importation touche1(), touche2(), etc... et que le code qui y soit attaché s'adapte en fonction de la feuille sur laquelle je suis.

J'ai en effet une feuille par mois, appelées Janvier, Février, Mars....

Y a-t-il une solution pour qu'il n'y ait qu'un seul userform, ou dois-je en faire un pour chaque feuille ?

De même, vois-tu une solution pour créer un bouton qui fasse appel à une fonction qui me récupère tous les Codes (313,314 etc)d'un coup ?

D'avance merci

Bonjour

Alors recommandation importante

Banzai64 a écrit :

Si pas ça joins les fichiers anonymisés, cela sera plus facile

A te lire

Si on te relis bien ,

Dans le premier post tu demande un bouton par code , et maintenant , coup de tempête et hop, tu veux un bouton pour tout les codes.

Combien y'a t il de codes , sont -ils évolutifs . etc etc , car la à être baladé , j'ai déjà le mal de mer

Re,

Voici les liens de mes fichiers :

Pour te répondre Misterno, comme je l'ai indiqué lors de mon premier message, je ne suis qu'un modeste amateur en VBA. J'ai eu l'idée développée dans mon message précédent lorsque je tentais d'appliquer vos solutions. Navré donc si je te donne le mal de mer. Je reformule donc :

Je souhaite qu'à l'ouverture de mon fichier P&L 2011 apparaisse un userform. Sur cet userform figurera des boutons me permettant, selon la feuille sur laquelle je suis, d'importer toutes mes lignes de DEPENSES 2011 selon mes différents codes. Je souhaite également avoir, si cela est possible, un bouton qui me permet de faire toutes les importations en un clic, dans le cas où par ex le mois de juillet, je sais que je n'aurai pas à faire du cas par cas pour mes codes.

J'ajoute également une petite question : comme vous pourrez le voir dans mon fichier P&L 2011, je sépare chacun des codes par une ligne, afin de pouvoir y insérer un sous total. J'ai remarqué qu'avec le code VBA actuel, une fois que j'ai fais mes importations, je ne peux plus insérer de ligne entre ces importations afin d'y faire mon sous total. Comment remédier à ce problème ?

Espérant avoir été plus clair...

D'avance merci pour votre coup de main

Bonjour

Un essai à ...tester

Les deux fichiers dans le même répertoire

14gotals.zip (73.68 Ko)

Enorme merci ta solution me convient parfaitement, je n'en attendais même pas tant !

J'ai cependant remarqué 2 petits problèmes :

-concernant l'importation du mois d'avril, j'ai une erreur d'execution '9', qui s'arrête sur Sheets(Me.ComboBox1.Value).Rows("2:65536").Clear lors du débogage. Une idée d'où cela peut venir ?

-comparé à tes fichiers, le temps de traitement avec les miens pour l'importation sont bcp plus élevés (15 à 20s pour finir l'importation). Est-ce normal ?

D'avance merci,

-- 29 Juin 2011, 03:44 --

J'ai résolu le 1ere prob : cela venait du fait que le nom de ma feuille était "Avril" et non pas "Avr".

-- 29 Juin 2011, 03:57 --

Dernière petite question et tout sera parfait....

Comment puis-je faire en sorte d'afficher une entête avant chaque importation ?

Je schématise :

NIP HOTEL

313

314

315

NIP SPA

311

Interventions Extérieures

311

312

313

J'imagine que cela relève du même niveau de difficulté que d'insérer une ligne après chaque code pour y faire un sous total, mais je n'arrive même pas à trouver la partie de ton code qui fait ça...

Navré de t'en demander tant !

D'avance merci

Bonjour

A voir

Bien vu pour "Avril"

J'en ai profité pour corriger les autres pages

Bonjour Banzai64,

Je viens de tester, tout marche ! En un mot, c'est parfait.

Merci beaucoup pour ton aide précieuse, et peut-être à bientôt..

Rechercher des sujets similaires à "placement derniere ligne"