Copier ligne d'un tableau sur un autre si condition

Fermé
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016 - 1 nov. 2016 à 20:18
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016 - 8 nov. 2016 à 21:46
Bonjour
Je souhaite copier une ligne d'un tableau d'une feuille de calcul dans un autre tableau sur autre feuille de calcul avec une condition si :
1er problème : j'ai enregistré une macro :réalisée avec outils macro enregistrer une macro, fait le copier coller de la ligne et terminer l'enregistrement. Mais quand j'exécute la macro : copie toujours sur la même ligne ! je voudrais que la ligne ajoutée se mette en dernière position sur mon tableau
2ème problème : comment faire appel à la macro enregistrée auparavant. Quel instruction faire du genre : =si(A9=oui; j'execute la macro copie;"") ??
Nb : ne souhaite pas utiliser la programmation VBA car ne la connais pas, mais simplement des instructions simples du genre "si" et appel à macro.
A voir également:

8 réponses

ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
1 nov. 2016 à 22:06
Bonjour

1. je voudrais que la ligne ajoutée se mette en dernière position sur mon tableau
dernière ligne d'une feuille
lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row
dernière ligne de la colonne A
lifin = Range("A" & Rows.Count).End(xlUp).Row
2. comment faire appel à la macro enregistrée auparavant. Quel instruction faire du genre : =si(A9=oui; j'execute la macro copie;"") ??
If Range("A9")="oui" Then
Call macrocopie
End If
3. ne souhaite pas utiliser la programmation VBA
????

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
2 nov. 2016 à 18:24
Merci d'avoir répondu si vite !!
j'ai essayé de comprendre, mais mon problème est que je suis presque ignorante dans la programmation VBA . Par contre elles sont très simples je l'admet par rapport à la macro que j'ai "créée" en exécutant pas à pas ce que je voulais faire-voir plus bas!!
Je ne vais donc pas chercher à comprendre les instructions mais je souhaite quand même pouvoir les utiliser :
1ère : lifin = Cells.Find("*", , , , xlByRows, xlPrevious).Row

2ème : If Range("A9")="oui" Then
Call macrocopie
End If

comment et où dois-je les copier? dans une cellule? en créant une autre macro?
(Idéalement je voudrais ajouter un bouton sur lequel cliquer pour exécuter la macro, mais on pourra voir ça après)

Sinon autre piste : voici le VBA de la macro très complexe qui s'affiche quand je regarde ce qu'il y a dedans et qui fonctionne partiellement (J'ai enregistré cette macro en exécutant toutes les taches une à une- je me place sur la cellule-sélectionne ligne - la copie vers le tableau de la feuille" rebut " et je supprime le contenue de la ligne copiée dans la feuille de départ"base triée par nom")

REM ***** BASIC *****

sub copier_ligne_dans_rebut_effacer_nom
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$R$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$11:$Q$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 3

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$6"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Nr"
args7(0).Value = 8

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "$J$11:$Q$11"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, Array())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Flags"
args10(0).Value = "SVDT"

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args10())

end sub

Quelle manipulation sur l'enregistrement de la macro pas à pas dois je apporter ou quelle modification de cette macro dois je faire pour que la ligne copiée se place à la fin du tableau(en dernière ligne)et non pas toujours sur la même ligne et que ce soit la bonne ligne( qui contient le "oui") qui soit copiée?

Désolée pour la complexité de mes questions, j'espère que je suis quand même assez claire et que qqn pourra m'aider.
Un grand grand Merci par avance.
NB : je peux donner mon pb concret par mail si besoin pour être plus clair ?
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
2 nov. 2016 à 20:19
Es tu sûre que c'est une macro excel-vba ?
Un petit exemple sous excel qui réalise ceci
je me place sur la cellule-sélectionne ligne - la copie vers le tableau de la feuille" rebut " et je supprime le contenue de la ligne copiée dans la feuille de départ
http://www.cjoint.com/c/FKctrgwW7On

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
2 nov. 2016 à 22:08
Bonsoir,
Je ne suis pas sure comme tu dis que c'est une macro excel vba (je travaille avec open office calc...)ca a l'air le même codage pourtant?
Dans le fichier que tu a fait (que j'ai enregistré)
j'ai fait un test sur le fichier : ça ne marche pas : rien ne se passe quand je clique sur le bouton OK
ensuite j'ai assigné le bouton à la macro module1 (clic droit sur le bouton comme tu m'as dit, je vais chercher module1 et assigner ok) et ne marche toujours pas : rien ne se passe : il y a juste une main quand je passe la souris sur le bouton.
NB :J'ai bien réussi à afficher la macro que tu as créée avec ALT F11
Désolée,
il y a qqch qui bloque...
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
3 nov. 2016 à 17:41
il y a qqch qui bloque...
Oui, tu es sous Open Office et non Microsoft Office, donc la macro n'est pas reconnue (ou du moins je le pense). Il te faut mettre ton sujet sur le forum Open Office/Libre Office
Désolé

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
3 nov. 2016 à 22:19
Bonsoir,
En effet avec Excel cela fonctionne; J'ai testé à mon travail !!
Par contre je ne souhaite pas effacer toute la ligne mais seulement quelques cellules.
Quelle modification apporter à la macro?
NB :Pour le bouton : nickel j'ai compris!
Sinon, je souhaite exécuter la macro automatiquement et non pas à partir du bouton : cad dès qu'une cellule de la lige = texte1 ou texte2 ou texte3 je veux exécuter la cacro?
Est-ce l'instruction écrite dans le premier message qu'il faut utiliser ? en la modifiant pour mettre texte1 ou texte2 ou texte3 à la place de "oui", comment formuler le "ou"?
If Range("A9")="oui" Then
Call macrocopie
End If

Une fois l'instruction écrite : Est-ce qu'il faut mettre ces instructions dans une macro ? ou écrire l'instruction dans une cellule (ce n'est pas clair pour moi)!!
Après je pense arrêter de t'embêter, car je deviens soulante ?!!
Merci encore pour ton aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
4 nov. 2016 à 18:07
Beaucoup de questions, difficile de répondre sans avoir une idée de la structure de ton fichier
Peux tu envoyer un bout de ton fichier (excel) sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu (en particulier, qu'est ce que tu entends par : "Sinon, je souhaite exécuter la macro automatiquement et non pas à partir du bouton : cad dès qu'une cellule de la lige = texte1 ou texte2 ou texte3 je veux exécuter la cacro?"
1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller"

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
4 nov. 2016 à 18:35
Voilà mon fichier

https://www.cjoint.com/c/FKerHYrrYB0
J'espère que tu peux le lire...
A bientôt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
4 nov. 2016 à 18:50
petite précision
= texte 1, texte 2, texte 3 cad motifs de rebut: décédé, parti sans laisser d'adresse, réexpédition définitive
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 4/11/2016 à 21:05
Un début
http://www.cjoint.com/c/FKetRvFQ1nn

Cdlmnt
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
4 nov. 2016 à 21:05
Une autre possibilité
http://www.cjoint.com/c/FKeufb6ehnn
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
4 nov. 2016 à 22:18
Encore merci pour ton aide, je vais tester les 2 fichiers au bureau demain avec Excel et te tiens au courant.
A très bientôt
Merci
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
5 nov. 2016 à 19:09
Ca fonctionne très bien. Un grand merci pour ton aide.
C'est très gentil d'aider les personnes qui en ont besoin et qui sont un peu ignorantes en la matière!!
Je ne vais pas abuser et vais essayer d'avancer toute seule en m'inspirant des solutions à mes premiers problèmes.
A une prochaine fois peut-être si je suis vraiment coincée dans mon projet.
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
5 nov. 2016 à 09:06
Attention, tu as aussi du code dans le module de la feuille piquage

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
5 nov. 2016 à 20:20
Je ne vois pas de quoi tu parles :(
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
5 nov. 2016 à 21:12
La remarque se réfère au 2° fichier uniquement
Le même avec quelques améliorations et explications
http://www.cjoint.com/c/FKfukZbXcln

Cdlmnt
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
6 nov. 2016 à 08:34
C'est plus clair :)
Je testerai lundi.
Encore Merci
0
helfy22 Messages postés 11 Date d'inscription mardi 1 novembre 2016 Statut Membre Dernière intervention 8 novembre 2016
8 nov. 2016 à 21:46
Bonsoir,
En effet c'est plus clair et ça fonctionne très bien.
Reste à appliquer à mon cas professionnel, j'espère y arriver ...
Il me restera encore du chemin après car je veux mettre en place beaucoup d'autres choses..
Encore merci pour tout , et surtout pour m'avoir lancer mon projet.
0