Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2353 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Tableau excel Liaison ou pas?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tableau excel Liaison ou pas?

n°2807145
safeman993
Posté le 17-09-2008 à 23:50:59  profilanswer
 

Bonojur à tous
 
J'ai lu pas mal de sujets concernant les tableaux dans excel; malheureusement je n'ai pas trouvé un sujet qui peut m'aider un régler mon problème.
 
voila, j'ai un tableau excel où je stock les article en attente de traitement. mon tableau ressemble en quelque sort à ceci :
_______________________________
date |      N° art  |    Client    |   .....
____ ____________________________
 
 je voudrais faire en sorte que chaque fois qu'un article est traité (avec une case à cocher lébéllée "terminé" ), la ligne disparaît de la feuille1 et apparait dans la feuille2 dans un tableau similaire
 
Juste une petite différence (en cas d'erreur), un bouton ou une case à cocher dans le 2ème tableau peut remettre la ligne supprimée à sa place dans le premier tableau.
 
j'espère que j'ai bien exposé mon problème. je vous remercie pour toutes vous suggestions.
 
ps  
je suis plus que débutant dans excel, actullement je barre les lignes qui sont traités, et  c'est très moche.

mood
Publicité
Posté le 17-09-2008 à 23:50:59  profilanswer
 

n°2807402
seniorpapo​u
Posté le 19-09-2008 à 07:40:41  profilanswer
 

Bonjour,
 
voici une macro qui fait passer de Feuil1 à Feuil2 et inversement.  mettre la macro dans un module de vba.
 
Sub transf()
'
' transf Macro
' enregistrée le 19/09/2008 par SENIORPAPOU
' on suppose que la feuille1 s'appelle Feuil1 et l'autre Feuil2
 
'
    Dim ssdep As Worksheet
    Dim ssariv As Worksheet
    Set ssdep = ActiveSheet
    Selection.EntireRow.Select
    Selection.Cut
    If ActiveSheet.Name = "Feuil1" Then
    Set ssariv = Sheets("Feuil2" )
    Else
    Set ssariv = Sheets("Feuil1" )
    End If
    ssariv.Select
    Range("a1" ).EntireRow.Select
    Selection.Insert Shift:=xlDown
    ssdep.Select
    Selection.Delete Shift:=xlUp
End Sub
 
 
fonctionnement: sélectionner la ligne ou une cellule de la ligne à faire passer, lancer la macro.
 
Si tu débutes vraiment on pourra installer ensemble la macro.


Message édité par seniorpapou le 19-09-2008 à 07:42:09
n°2807502
Ptit loup
Quand c'est flou, y'a un loup
Posté le 19-09-2008 à 15:22:30  profilanswer
 

Débutant en HFR aussi... il existe un topic dédié à Excel (cf signature)... merci !
 
Sinon, en effet, le seul moyen est de passer par une macro comme indiqué...
Ensuite, reste à l'adapter pour vraiment répondre à ton souci... il faudra que ça ajoute la ligne "à la fin" de ta feuille 2 je suppose (à moins que tu aies un classement par date ?)... etc...

n°2807561
safeman993
Posté le 19-09-2008 à 19:54:03  profilanswer
 

Merci pour vos répenses.
Oui je suis vraiment débutant. donc t'as parlé d'un module, mais je ne sais pas comment passer à un module vba.
 et comme t'as suggeré, je préfère bien que tu m'aide à l'installer je t'en serais très reconnaissant.
 
ps: je suis sous excel 2007.

n°2807579
safeman993
Posté le 19-09-2008 à 21:15:29  profilanswer
 

safeman993 a écrit :

Merci pour vos répenses.
Oui je suis vraiment débutant. donc t'as parlé d'un module, mais je ne sais pas comment passer à un module vba.
 et comme t'as suggeré, je préfère bien que tu m'aide à l'installer je t'en serais très reconnaissant.
 
 
Voila j'ai réussi à installer la macro, le mécanisme c'est presque ce que je voudrais. sauf que moi je voulais quelque chose comme ceci:
 
________
| terminé| <---  ici un button par exp dans la ligne A1
________
Ce boutton opère lorsque je selectionne une ligne et je click terminé
la ligne disparait de la feuil1 et apparait dans la feuil2.
____________________________________________________
Date|        |n° art|   |Client|  |.....|
____________________________________________________
19/09/08   |00000|   | Mr.X|   |.....|
____________________________________________________
20/09/08   |11111|   |Mr.y|    |.....|
____________________________________________________
ps: je suis sous excel 2007.



Message édité par safeman993 le 19-09-2008 à 21:16:56
n°2807580
seniorpapo​u
Posté le 19-09-2008 à 21:29:55  profilanswer
 

Bonsoir,
on peut traîter le clic sur la cellule de la colonne "terminé" de la ligne à passer ou
mettre un bouton de commande dans chaque feuille et lui attacher la macro.
Je te détaille demain si tu ne réussis pas
Cordialement
 
edit: l'utilisation de  "figer les volets" permet de garder le bouton de commande en haut de l'écran si on lui réserve la première ligne.

Message cité 1 fois
Message édité par seniorpapou le 19-09-2008 à 22:20:28
n°2807602
safeman993
Posté le 19-09-2008 à 23:07:48  profilanswer
 

seniorpapou a écrit :

Bonsoir,
on peut traîter le clic sur la cellule de la colonne "terminé" de la ligne à passer ou
mettre un bouton de commande dans chaque feuille et lui attacher la macro.
Je te détaille demain si tu ne réussis pas
Cordialement
 
edit: l'utilisation de  "figer les volets" permet de garder le bouton de commande en haut de l'écran si on lui réserve la première ligne.


 
 
Franchement, un grand merci SeniorPapou, je viens de créer un boutton que j'ai nommé "Terminer" dans Feuil1 A1, puis j'ai coller la macro dans la page du code. Jai fait la même chose dans  Feuil2 avec un boutton "Annuler" j' y ai collé la macro, puis inversé l'ordre des Feuil dans le code espèrant que cela marchera et ça  a marché   :bounce: youpi. merci qui ?
Merci Seniorpapou biensur.
 
Maintenant je peux selectionner une entrée cliquer sur terminer et la ligne entière passe dans la Feuil2. Si par erreur je clique sur ligne qui est encore en cours, il suffit de cliquer sur Annuler pour la ligne retrouve sa place dans la feuil1.
Il me faut juste trouver comment respecter l'ordre des dates (ordre chronologique) dans les deux feuilles.
 
Est ce que je peux te demander si tu peux me commenter le code que je puisse comprendre ce que chaque ligne fait exactement.
 encore une fois chapeau  :jap:


Message édité par safeman993 le 19-09-2008 à 23:15:46
n°2807620
seniorpapo​u
Posté le 20-09-2008 à 07:34:04  profilanswer
 

pour le classement par date, tu peux t'inspirer de ceci:
 
    Dim ssdep As Worksheet
    Dim ssariv As Worksheet
 
Dim repos As Double
    repos = Selection.Row

 
    Set ssdep = ActiveSheet
    Selection.EntireRow.Select
    Selection.Cut
    If ActiveSheet.Name = "Feuil1" Then
    Set ssariv = Sheets("Feuil2" )
    Else
    Set ssariv = Sheets("Feuil1" )
    End If
    ssariv.Select
    Range("a1" ).EntireRow.Select
    Selection.Insert Shift:=xlDown
   
    Cells.Select
    Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A2" ).select    

 
    ssdep.Select
    Selection.Delete Shift:=xlUp
   
    Cells.Select
    Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    cells(repos,1).select    

 
 


Message édité par seniorpapou le 20-09-2008 à 07:58:52
n°2807624
seniorpapo​u
Posté le 20-09-2008 à 09:30:06  profilanswer
 

Bonjour,
pour l'explication des lignes de code, tu vas su vba, tu sélectionne un "mot", puis F1.
par exemple tu prends "set" puis F1.
dans cette page d'aide, tu auras dans "voir aussi", l'explication de dim
______________________
 Selection.EntireRow.Select  
    Selection.Cut  
pour ces deux lignes, on suppose (et c'est risqué **) que l'on a sélectionné une cellule de la bonne ligne à transférer, et on sélectionne la ligne entière. Puis on coupe.
 
___________________________________________
If ActiveSheet.Name = "Feuil1"  
 
Activesheet.name donne le nom de la feuille "sur laquelle on est au moment de l'appel à la macro".
 
si la feuille en cours (ssdep) s'appelle "Feuil1", je définis la référence à l'objet feuille destination (ssariv) comme étant "Feuil2" ,
 
si la feuille en cours (ssdep) s'appelle "Feuil2", je définis la référence à l'objet feuille destination(ssariv) comme étant "Feuil1" .
___________________________________
 
Selection.Insert Shift:=xlDown  
pour insérer ce qui a été copié, en décalant vers le bas..
 
Selection.Delete Shift:=xlUp  
pour supprimer la ligne, en décalant vers le haut les lignes qui sont en dessous.
_____________________________
 
** puisque c'est risqué on pourrait demander confirmation du déplacement avant de le réaliser
 
Cordialement


Message édité par seniorpapou le 20-09-2008 à 09:32:05
n°2807625
safeman993
Posté le 20-09-2008 à 09:40:11  profilanswer
 

Merci beaucoup senirpapou et à travers toi à tous ceux qui fournissent leurs aides sur le fourm-hardware.
je vais essayer tout ça et peut être à une prochaine fois. :jap:
 

mood
Publicité
Posté le 20-09-2008 à 09:40:11  profilanswer
 

n°2807636
safeman993
Posté le 20-09-2008 à 11:24:40  profilanswer
 

Voilà à quoi ressemble maintenant (ma) macro :
 
Sub Bouton1_Clic()
 
'
' transf Macro
' enregistrée le 19/09/2008 par SENIORPAPOU
' on suppose que la feuille1 s'appelle Feuil1 et l'autre Feuil2
 
'
    Dim ssdep As Worksheet
    Dim ssariv As Worksheet
    Dim repos As Double
    repos = Selection.Row
     
    Set ssdep = ActiveSheet
    Selection.EntireRow.Select
    Selection.Cut
    If ActiveSheet.Name = "Feuil1" Then
    Set ssariv = Sheets("Feuil2" )
    Else
    Set ssariv = Sheets("Feuil1" )
    End If
    ssariv.Select
    Range("a2" ).EntireRow.Select
    Selection.Insert Shift:=xlDown
    Cells.Select
    Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A2" ).Select
    ssdep.Select
    Selection.Delete Shift:=xlUp
     
End Sub
_______________________________________________________
Sub Feuil2_Bouton1_Clic()
'
' transf Macro
' enregistrée le 19/09/2008 par SENIORPAPOU
' on suppose que la feuille1 s'appelle Feuil1 et l'autre Feuil2
 
'
    Dim ssdep As Worksheet
    Dim ssariv As Worksheet
    Dim repos As Double
    repos = Selection.Row
     
    Set ssdep = ActiveSheet
    Selection.EntireRow.Select
    Selection.Cut
    If ActiveSheet.Name = "Feuil2" Then
    Set ssariv = Sheets("Feuil1" )
    Else
    Set ssariv = Sheets("Feuil2" )
    End If
    ssariv.Select
    Range("a2" ).EntireRow.Select
    Selection.Insert Shift:=xlDown
    Cells.Select
    Selection.Sort Key1:=Range("A2" ), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("A2" ).Select
    ssdep.Select
    Selection.Delete Shift:=xlUp
 
End Sub
 
j'ai utilisé le tri par date, mais comme ça selectionne la ligne entière, je ne risque pas de perdre les autres champs sur la même ligne pendant le transfer.
le tri comme t'as remarqué s'opére juste à l'insertion, vu que je rentre mes commande au jour le jour. donc pas besoin de trier la colone une fois la commande supprimée. les lignes se déplace vers le haut dans la Feuil1 en respectant l'ordre.
 
c'est très instructif. Et moi qui utilisais excel tout bpetement comme une feuille de papier, je crois que j'ai trouvé le moyen de mieu l'utiliser maintenant. si t'as des liens de vulgarisation du VBA je suis prenneur (biensur j'ai déjà commencé ma recherche sur google.
 
merci mille fois.

n°2807653
seniorpapo​u
Posté le 20-09-2008 à 12:49:01  profilanswer
 

Bonjour,
les séquences:
 
If ActiveSheet.Name = "Feuil2" Then  
    Set ssariv = Sheets("Feuil1" )  
    Else  
    Set ssariv = Sheets("Feuil2" )  
    End If  
 
 
et:
 
If ActiveSheet.Name = "Feuil1" Then  
    Set ssariv = Sheets("Feuil2" )  
    Else  
    Set ssariv = Sheets("Feuil1" )  
    End If  
 
donnant strictement le même résultat, tu pouvais te contenter d'appeler une macro commune placée dans un module ce qui évite de retapper les modifs s'il y en a sur chacunes des macros avec les risques d'erreur que cela induit.
 
Félicitations pour tes facultés d'adaptation.
pour les liens, je vais voir, j'espère que d'autres pourrons t'en donner.
 

Citation :

je ne risque pas de perdre les autres champs sur la même ligne pendant le transfer.


 
je n'ai pas compris ce que tu veux dire dans la ligne ci-dessus
 
 
EDIT: pour voir un peu de VBA sous excel, tu peux commencer par enregistrer des macros et regarder le code qui est généré.
 
http://www.info-3000.com/vbvba/
 
http://www.cathyastuce.com/index.p [...] &topics=16
 
http://vb.developpez.com/faqvba/

Message cité 1 fois
Message édité par seniorpapou le 20-09-2008 à 12:57:56
n°2807702
safeman993
Posté le 20-09-2008 à 19:29:05  profilanswer
 

seniorpapou a écrit :

Bonjour,
les séquences:
 
If ActiveSheet.Name = "Feuil2" Then  
    Set ssariv = Sheets("Feuil1" )  
    Else  
    Set ssariv = Sheets("Feuil2" )  
    End If  
 
 
et:
 
If ActiveSheet.Name = "Feuil1" Then  
    Set ssariv = Sheets("Feuil2" )  
    Else  
    Set ssariv = Sheets("Feuil1" )  
    End If  
 
donnant strictement le même résultat, tu pouvais te contenter d'appeler une macro commune placée dans un module ce qui évite de retapper les modifs s'il y en a sur chacunes des macros avec les risques d'erreur que cela induit.
 
Félicitations pour tes facultés d'adaptation.
pour les liens, je vais voir, j'espère que d'autres pourrons t'en donner.
 

Citation :

Citation :

je ne risque pas de perdre les autres champs sur la même ligne pendant le transfer.


 
je n'ai pas compris ce que tu veux dire dans la ligne ci-dessus


EDIT: pour voir un peu de VBA sous excel, tu peux commencer par enregistrer des macros et regarder le code qui est généré.
 
http://www.info-3000.com/vbvba/
 
http://www.cathyastuce.com/index.p [...] &topics=16
 
http://vb.developpez.com/faqvba/


 
Puique je n'ai pas encore tout assimilé,  je préfère garder ce code telquel que de courir le risque de me mélanger les pinceaux.
 
 

Citation :

Citation :

je ne risque pas de perdre les autres champs sur la même ligne pendant le transfer.


 
je n'ai pas compris ce que tu veux dire dans la ligne ci-dessus


 
je voulais dire par champs le cellules qui comprtent autres éléments comme n°art client  type de cde.  ...etc qui sont sur le même ligne.
 
avant pour mettre les datent dans le bon ordre je selection la colone date puis tri là excel me propose d'étandre la selection pour inclure les autres cellules. voilà ce je voulais dire.
 
merci pour les liens.

Message cité 1 fois
Message édité par safeman993 le 20-09-2008 à 19:30:14
n°2807829
Ptit loup
Quand c'est flou, y'a un loup
Posté le 21-09-2008 à 14:31:54  profilanswer
 

safeman993 a écrit :


 
Puique je n'ai pas encore tout assimilé,  je préfère garder ce code telquel que de courir le risque de me mélanger les pinceaux.
 
 

Citation :

Citation :

je ne risque pas de perdre les autres champs sur la même ligne pendant le transfer.


 
je n'ai pas compris ce que tu veux dire dans la ligne ci-dessus



je voulais dire par champs le cellules qui comprtent autres éléments comme n°art client  type de cde.  ...etc qui sont sur le même ligne.
 
avant pour mettre les datent dans le bon ordre je selection la colone date puis tri là excel me propose d'étandre la selection pour inclure les autres cellules. voilà ce je voulais dire.

merci pour les liens.


Désolé... mais, c'est sensé être plus compréhensible là ??? Ne serait-il pas possible de relire avant de poster, d'utiliser la ponctuation, de rajouter tous les mots à la phrase, de corriger les coquilles.... merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Tableau excel Liaison ou pas?

 

Sujets relatifs
[Excel] Création d'étiquettesURGENT - Aide instalation add-in Excel (Data analysis tools pack)
préoccupation sur excelcréer une mise à jour automatique entre word et excel
[résolu] Excel,changement de couleur, sous condition[EXCEL] Partage d'un classeur...
Petit coup de pouce sous excelEquivalent du GROUP BY dans Excel
Excel - problème affichageProblème avec fichier excel
Plus de sujets relatifs à : Tableau excel Liaison ou pas?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR