Excel ajout d'une ligne automatiquement - Logiciels - Windows & Software
Marsh Posté le 22-02-2006 à 01:14:24
tu édite le premier post de ce topic avec le bouton
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 ...
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
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 ?
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 ? |
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
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 ?
Marsh Posté le 23-02-2006 à 19:17:47
Merci pour ta réponse. Les opérations que jeffectue :
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 cest 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 quen 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 tinclus 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
Jespère que cela va te permettre dallumer ma chandelle !
Je termine ici avant qu'on intitule ce message "Tome 1"
Merci beaucoup
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
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
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
Marsh Posté le 26-02-2006 à 11:46:43
Tu peux coller le nouveau code que tu as écrit ?
Marsh Posté le 26-02-2006 à 18:47:02
demain je serai chez-moi et je t'enverrai le code
A bientôt
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
Marsh Posté le 27-02-2006 à 08:41:05
|
Essayes comme ça
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
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
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