Excel ajout d'une ligne automatiquement

Excel ajout d'une ligne automatiquement - Logiciels - Windows & Software

Marsh Posté le 22-02-2006 à 00:29:13    

Sujet: Ligne automatique
 
Bonjour à tous. Voici mon probleme:
J'ai une feuille FACTURE avec les champs Code_client, Qte,Prix par exemple.
Je voudrais copier ces valeurs sur une ligne dans une autre feuille RAPPORTS. Et si je fais une autre facture, je voudrais que les nouvelles valeurs s'ajoutent dans Rapport sur la ligne suivante. Comment faire pour pouvoir ajouter cette nouvelle ligne automatiquement et que les valeurs s'y inscrivent
Merci
 
Bonne journée

Reply

Marsh Posté le 22-02-2006 à 00:29:13   

Reply

Marsh Posté le 22-02-2006 à 01:14:24    

tu édite le premier post de ce topic avec le bouton http://forum-images.hardware.fr/themes_static/images_forum/1/edit.gif
et tu coche en bas suprimer ...
et tu recréé le même topic dans la bonne catégorie, on peut pas chager un topic de catégorie mais de sous cathégorie seulement ...


---------------
Serveur en cours de maintenance...  Veuillez nous excuser pour la gêne occasionnée
Reply

Marsh Posté le 22-02-2006 à 16:57:35    

Merci pour l'information. Je viens d'effacer mon 2ième message. Quant au message original c'est un responsable du Forum qui l'a déplacé.
Merci et bonne fin de journée
michel

Reply

Marsh Posté le 22-02-2006 à 22:57:51    

Genre tu cliques sur un bouton et les valeurs sont sauvegardées sur une autre feuille ?
 
Tu connais un peu le VBA ?


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 23-02-2006 à 01:37:59    

Prozac a écrit :

Genre tu cliques sur un bouton et les valeurs sont sauvegardées sur une autre feuille ?
 
Tu connais un peu le VBA ?


 
Oui je connais assez bien VBA mais j'en apprend tous les jours!!. Oui  
je clique sur un bouton. En fait, lorsque la facture est
imprimée, je clique le bouton Valider qui premièrement "vide" les  
champs afin de pouvoir passer à une nouvelle facture et qui transfère
sur ma feuille RAPPORTS, sur une ligne le Code_client, le numéro de  
la facture et le montant.  
 
Jusque là ca va. Mais lorsque je passe à la deuxième facture, sur  
ma feuille Rapports le curseur se positionne sur la ligne suivante  
(macro) mais il place les nouvelles données toujours sur  
la première ligne. Donc je ne suis pas capable d'archiver mes données sur
la feuille Rapports.
 
Donc ce que je cherche c'est la manière d'ajouter une nouvelle ligne
sur Rapports et d'y inscrire les nouvelles données sur CETTE même ligne.
J'ai cherché partout, j'ai tout tenté mais là je ne sais plus quoi faire.
 
Merci de prendre le temps de me lire et bonne soirée. Il est 19h ici à
Montréal.
Michel

Reply

Marsh Posté le 23-02-2006 à 09:06:15    

Comment fais tu le transfert vers la deuxième feuille ?
 
Pour trouver la dernière cellule sur une plage de cellule, tu peux faire quelque chose comme
range("A1" ).End(xlDown).Offset(1,0).Activate
 
(c'est équivalent à faire ctrl-fleche vers le bas sur une feuille excel)
 
ou si tu n'es pas sur que ta plage est continue (toutes les cellules ne sont pas forcement remplies, tu peux le prendre dans l'autre sens :
range("A65535" ).End(xlUp).Offset(1,0).Activate
 
 
est-ce le genre de chose qui t'aide ?


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 23-02-2006 à 19:17:47    

Merci pour ta réponse. Les opérations que j’effectue :
 
Facture--Transition---Rapports
 
Lorsque la facture est imprimée je clique le bouton Valider qui enclanche ce qui suit :
 
1) De ma facture, je copie 3 valeurs de ma facture (code_clien,nom_client, et No_Facture) Sur la feuille Transition de facon que ces valeurs soient sur une même ligne.
 
2) A partir de la feuille Transition, je transfert maintenant ces valeurs sur la feuille Rapports et le tout sur une même ligne (la
première ligne vide).
 
Pour cela je me positionne sur la première ligne vide de Rapports et je transfert.
 
Jusque là ça fonctionne mais il ne transfert que la première valeur.  
Et aussi où ça ne fonctionne pas c’est lorsque je refais toutes les étapes ci-haut mentionnées pour une nouvelle facture. Le transfert de Transition vers Rapports se fait mais malgré
que je me positionne sur la première ligne vide, mon programme ne veut rien savoir et copie ces valeurs
toujours sur la première ligne en écrasant les autres données.
 
Tu as compris qu’en fait la feuille Rapports a pour but de compiler toutes les factures pour que je puisse
par exemple, à la fin du mois, visualiser le nom des clients et le montant des factures.
 
Je t’inclus la macro utilisée pour le transfert des données de la feuille Transition vers la feuille Rapports
………………………………………….
Lorsque j'ai complété la facture et qu'elle est imprimée, je clique sur Valider qui contient ce qui suit:
 
Sub new_line()
Worksheets("rapports" ).Activate '// j'active la feuille Rapports
Cells(8, 4) = "rapports activée" '//va sur la dernière cellule vide
Range("A1" ).Select
While IsEmpty(ActiveCell) = False
ActiveCell.Offset(1, 0).Activate
Wend
Cells(8, 5) = "derniere ligne"
'// Maintenant copier les infos de la feuille transition qui sont sur cellules A2 B2 et C2  
'// vers la feuille Rapports
ActiveCell.Value = Sheets("facture" ).Range("a2:c2" ).Value
End Sub
 
Mais il ne transfert sur la feuille Rapports que A2 et ignore B2 et C2
 
J’espère que cela va te permettre d’allumer ma chandelle !
Je termine ici avant qu'on intitule ce message "Tome 1"  
Merci beaucoup
 

Reply

Marsh Posté le 23-02-2006 à 21:39:35    

Le passage  
While IsEmpty(ActiveCell) = False  
ActiveCell.Offset(1, 0).Activate  
Wend  
 
correspond au bout de code que j'avais mis pour aller tout en bas. Ca devrait être plus rapide.
 
Et plutôt que terminer par activecell.value=blabla, (puisqu'il ne crée de valeur que pour la cellule active, qui est celle de la colonne A), tu devrais plutôt coller les valeurs (je suis sur mac, je peux pas t'aider pour la syntaxe exacte mais en enregistrant la séquence en macro, tu devrais pouvoir comprendre comment faire sans problème)
 en gros, ça ressemble à activecell.paste


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 24-02-2006 à 17:05:53    

merci pour les informations. Je vais tester ce soir et t'en donnerai des nouvelles
Michel

Reply

Marsh Posté le 26-02-2006 à 00:28:13    

J'ai tenté ta solution mais hélas cela ne fonctionne pas.
Si parfois tu avais une autre solution ça serait le bienvenu.
Merci et bonne soirée
Michel

Reply

Marsh Posté le 26-02-2006 à 00:28:13   

Reply

Marsh Posté le 26-02-2006 à 11:46:43    

Tu peux coller le nouveau code que tu as écrit ?


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 26-02-2006 à 18:47:02    

demain je serai chez-moi et je t'enverrai le code
A bientôt

Reply

Marsh Posté le 27-02-2006 à 00:27:23    

voici mon nouveau code:
Sub copyall()
'
' copyall Macro
' Macro enregistrée le 2006-02-26 par Michel
'
    Sheets("transition" ).Select ' on choisit la feuille "transition"
    Range("A2:F2" ).Select 'on select les cellules A2 à F2
    Range("F2" ).Activate
    Selection.Copy
    Sheets("rapports" ).Select
    Range("a2:F2" ).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, transpose:=False
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("C3" ), Order1:=xlDescending, Key2:=Range("B3" ) _
        , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom
    Range("A9" ).Select   '// Ici il faut trouver la formule pour placer curseur à première ligne vide  
'// pour de nouvelles données (cumuler les données)
'
End Sub

Reply

Marsh Posté le 27-02-2006 à 08:41:05    


Sub copyall()  
'  
' copyall Macro  
' Macro enregistrée le 2006-02-26 par Michel  
'  
    Sheets("transition" ).Select ' on choisit la feuille "transition"  
    Range("A2:F2" ).Select 'on select les cellules A2 à F2  
    Range("F2" ).Activate  
    Selection.Copy  
    Sheets("rapports" ).Select
    Range("a2" ).end(Xlup).offset(1,0).select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _  
        False, transpose:=False  
    Application.CutCopyMode = False  
    Selection.Sort Key1:=Range("C3" ), Order1:=xlDescending, Key2:=Range("B3" ) _  
        , Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _  
        False, Orientation:=xlTopToBottom  
    Range("A9" ).Select   '// Ici il faut trouver la formule pour placer curseur à première ligne vide  
'// pour de nouvelles données (cumuler les données)  
'  
End Sub


 
Essayes comme ça


Message édité par Prozac le 27-02-2006 à 08:41:22

---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 27-02-2006 à 17:15:08    

d'accord je l'essaie et je te donnerai le résultat. Merci beaucoup pour ton aide je l'apprécie vraiment
Michel

Reply

Marsh Posté le 27-02-2006 à 21:40:52    

Bonjour. Helas cela n'a rien changé. Mais entretemps j'ai eu un message de Galopin01 de ce même forum et son code fonctionne super bien. Je te transmet son code afin que tu puisses des fois l'utiliser si tu en as besoin: Merci beaucoup pour ton aide. Je l'apprécie beaucoup et c'est plaisant de voir l'entraide qu'il y a ici sur ce forum. Encore une fois merci pour tout le trouble que tu t'es donné.
 
Code :
 
Sub Test()    i = Sheets("Rapports" ).Cells(65535, 1).End(xlUp).Row    Sheets("transition" ).Range("A2:F2" ).Copy    Sheets("Rapports" ).Range("A" & i + 1).PasteSpecial Paste:=xlValues    Application.CutCopyMode = False    ' Cette macro ne fait aucune sélection et n'active rien    ' A toi de faire ton tri ensuite...    ' Sur cette ligne tu pourrais appeler une sous macro  : TriEnd Sub  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed