Macro mettre à la suite

Bonjour à tous,

je suis nouveau sur ce forum et je vous remercie d'avance pour l'aide que vous pourrez me donner!

Voici mon problème

je voudrais créer une macro qui renvoi la valeur de trois cellules dans un autre tableau mais à la suite des autres valeurs qui ce trouve déjà dans ce tableau.

j'ai déjà créer une macro qui copie la valeur des trois cellules dans le tableau et qui efface les données dans les cellule d'origine en attendant de nouvelle valeur.

Range("G16:I16").Select

Selection.Copy

Range("Q16").Select

ActiveSheet.Paste

ActiveSheet.Paste

Application.CutCopyMode = False

Range("G16:I16").Select

Selection.ClearContents

Range("M16").Select

j'espère être assez claire dans mon explication

j'imagine que cela doit-être possible mais je cale un peu

merci d'avance

Bonjour

Il y a quelques inconnues dans ta demande. Le mieux serait de placer un fichier exemple. est-ce possible

Amicalement

Edit: sinon essaie ceci

Sub test()
With Range("G16:I16")
    .Copy Range("Q" & Range("Q" & Rows.Count).End(xlUp).Row + 1)
    .ClearContents
End With
Range("M16").Select
End Sub

merci pour ton intervention dan,

voici le fichier

j'espère que ce sera plus claire

13test-tableau.xlsm (19.47 Ko)

Re

A la vue de ton fichier, je pense que l'on peut faire autrement que de passer par un code

Ce que tu cherches à faire c'est obtenir le total des ventes pour une personne ?

A te relire

En fait, le fichier que j'ai joint n'est qu'un premier jet!

la première feuille est une vision globale de la situation pour la personne et la deuxième c'est l'historique avec le total qui intervient pour le calcul des forfait dans la première feuille.

de plus dans le fichier joint il n'y à qu'une personne mais à terme il y en aura beaucoup plus!

J'essaye de ne pas trop alourdir le programme tout en essayant qu'il soit facile d'utilisation.

si tu as des idées elles sont les bienvenues, je suis ouvert à toutes propositions

je rejoint le fichier modifié pour plus de clarté

merci à toi

11test-tableau.xlsm (27.52 Ko)

Re,

Je te propose de faire autrement. Vois le fichier joint dans lequel on n'utilise plus que les feuilles 1 et 3

  • Dans ta feuille 1, tu entres tes données entre G et I
  • clique dans une cellule de la ligne que tu veux archiver
  • clique sur ton bouton Ajouter

En feuille 3, tu auras une base de données de chaque ajout effectué. Cela pourrait te servir pour d'autres évolution du fichier

La feuille 2 peut être supprimée

A te relire

Amicalement

16test-tableau.xlsm (26.68 Ko)

Salut Dan,

Alors la, chapeau!

je suis sur le cul (désolé pour l'expression mais c'est ce qui me vient en tête naturellement).

c'est tout simplement parfait, c'est génial!

avant toute chose merci de tout cœur, mais pourrais-tu (s'il te plait) m'expliquer comment fonctionne la formule que tu as mit dans la colonne J de la feuille 1.

j'aime bien comprendre et je voudrais être un peu moins bête.

rebonjour Dan,

ca marche super!

je peux créer autant de nouvelle personne que je veux le total se fait correctement et je retrouve le détail (historique) dans la feuil3.

Mais si je fait un tri alphabétique sur base du Nom dans la feuille1 il n'adapte pas la formule reprise dans la colonne J.

Hors cela serait intéressant, surtout quand il y aura beaucoup de personnes différentes!

comment je peux faire pour contourner ce problème?

merci d'avance

Re

Mais si je fait un tri alphabétique sur base du Nom dans la feuille1 il n'adapte pas la formule reprise dans la colonne J.

Là ce n'est pas possible. Le problème vient surement d'ailleurs ou alors tu as perdu quelque chose dans les formules

Vérifie ceci :

  • Ne pas avoir de lignes vides dans ta feuille 3 entre chaque donnée.
  • Que les noms en feuille 3 sont bien ceux de la feuille 1 (attention aux espaces et fautes d'ortographe)

Pour ce qui est des explications de la formule sur base de J8 par exemple --> =SOMME.SI(Nom;Feuil1!A8;DECALER(Nom;;1))

1. Nom vient de la formule =DECALER(Feuil3!$A$2;;;NBVAL(Feuil3!$A:$A)-1;) qui reprend ta plage en feuille 3 colonne A et ce à partir de la celle A2

2. Feuil1!A8 correspond à la valeur trouvée en A8 dans ta feuille 1

3. DECALER(Nom;;1)) permet d'aller chercher les valeurs dans la colonne B de ta feuille 3 en décalant d'une colonne la plage "Nom" définie

La formule SOMME.SI va donc chercher en feuille 3 la somme de toutes les valeurs correspondant à la donnée trouvé en A8

Espérant avoir été clair

A te relire

Amicalement

J'ai vérifié et ca ne marche pas pour le tri !

Attention je parle bien de trier les ligne qui ce trouve sur la feuille "Global"

si je sélectionne les 3 lignes (A4.A5 et A6) et que je fait un tri par ordre alphabétique sur base de la colonne avec les Nom des personne, le tri se fait, mais lorsqu'on regarde dans la formule qui maintenant ce trouve dans la colonne K, elle ne fait plus référence à la bonne cellule pour le calcul!

je te remets le fichier modifié pour que tu puisses voir

merci

16test-tableau-3.xlsm (36.34 Ko)

re

Ok. J'ai vu

Change ta formule par celle-ci --> =SOMME.SI(Nom;INDIRECT("Global!A" &LIGNE());DECALER(Nom;;1))

A te relire

super ca marche !!!!

Un tout grand merci pour ton aide, c'était vraiment sympa!

je n'aurais jamais espérer ca!

au plaisir partagé de te lire pour un autre sujet

A+


où ce trouve le bouton résolu ?????

re

où ce trouve le bouton résolu ?????

Pas de bouton résolu, mais juste à coté du bouton EDITER, tu as une case à cocher qui est verte lorsque le fil est ouvert et devient rouge lorsque le fil est cloturé.

Pratique car tu sais toujours si un fil est toujours ouvert ou fermé et tu peux rouvrir un fil cloturé (case rouge) en cliquant à nouveau sur cette case à cocher qui redevient verte

Cordialement

merci

A+

salut Dan,

j'ai préféré t'envoyer aussi un mail, car je n'était pas sûr que tu verrais ma nouvelle demande.

tous tes conseils pour résoudre mon problème son super et tout fonctionne très bien!

Néanmoins quand j'ai voulu protéger ma feuille "détail" pour empêcher d'autres utilisateur de faire des bétises la macro ci-dessous ne fonctionnait plus

Sub test()

dlg = Sheets("Détail").Range("A" &

Sheets("Détail").Rows.Count).End(xlUp).Row + 1 With Sheets("Global")

.Range("A" & ActiveCell.Row).Copy Sheets("Détail").Range("A" & dlg)

.Range("H" & ActiveCell.Row & ":J" & ActiveCell.Row).Copy Sheets("Détail").Range("B" & dlg)

.Range("H" & ActiveCell.Row & ":J" & ActiveCell.Row).ClearContents End With

End Sub

j'ai voulu y insérer ceci

ActiveSheet.Unprotect ("mot de passe")

et

ActiveSheet.Protect ("mot de passe")

mais ca ne fonctionne pas

peux-tu encore me filer un coup de main?

Merci d'avance

Re

Cela doit fonctionner. Je te reposte le code

Sub test()
Dim dlg As Integer
Sheets("Détail").Unprotect
dlg = Sheets("Détail").Range("A" & Sheets("Détail").Rows.Count).End(xlUp).Row + 1
With Sheets("Global")
    .Range("A" & ActiveCell.Row).Copy Sheets("Détail").Range("A" & dlg)
    .Range("H" & ActiveCell.Row & ":J" & ActiveCell.Row).Copy Sheets("Détail").Range("B" & dlg)
    .Range("H" & ActiveCell.Row & ":J" & ActiveCell.Row).ClearContents
End With
Sheets("Détail").Protect
End Sub

Reste plus qu'à mettre ton mot de passe

Cordialement

merci

A+

Rechercher des sujets similaires à "macro mettre suite"