Besoin d'aide sur une macro Excel pourtant simple

  • Initiateur de la discussion Power SLIMAK
  • Date de début
P

Power SLIMAK

Guest
Bonjour,

Je viens de tomber sur votre site que je trouve vraiment bien fait. Je suis quant à moi en train d'apprendre le VSB sous Excel. Pour ce, j'essaye de réaliser un petit programme de gestion des résultats de course d'athlétisme. Le hic, c'est que je coince sur une macro pourtant assez simple mais avec laquelle je n'arrive pas à me dépatouiller... Donc si vous pouviez me donner un petit coup de main, je vous en serai vraiment reconnaissant car hélas je coince sec et je ne sais pas à qui m'adresser :(

Concrêtement c'est très simple : l'utilisateur saisit dans 3 cellules A1, B1 et C1 trois informations distinctes. Sur le même onglet, on a un tableau de 3 colonnes qui reprend l'intitulé des rubriques correspondantes aux trois cellules de départ A1,B1 et C1 (on suppose que la première cellule du tableau est H4). j'ai besoin d'une macro qui fasse en sorte qu'a chaque fois que l'utilisateur clique sur un bouton, Excel copie automatiquement le contenu des 3 cellules A1, B1 et C1 et viennent les coller sur la première ligne libre du tableau en question. Bien sur toute la difficulté vient du fait qu'il faut qu'Excel descende à chaque fois d'une ligne et n'écrase pas les données de la ligne précédente. Je sais qu'il faut utiliser une cellule compteur et déclarer une variable qu'on incrémentera d'une unité (i +1) mais je n'arrive pas exactement à l'écrire..

Merci d'avance pour votre aide, vous me sortiriez une sacrée épine du pied


Bien cordialement,

Laurent JERINTE
 

michel_m

XLDnaute Accro
Bonjour,

essaies ceci:
Sub compiler()
Dim lig As Long
' 1° ligne vide
lig = Range('H65536').End(xlUp).Row + 1
' reporte le contenu des saisies
Range('A1:C1').Copy Cells(lig, 8)
End Sub

A+
Michel_M

bonjour Jacques: excuses moi mais comme j'avais écrit la macro...
 

Jacques87

XLDnaute Accro
Bonjour Michel

Aucun problème
En ce qui concerne ma réponse, j'inscris la nouvelle ligne en haut du tableau, j'avais cru comprendre que c'est ce que Laurent voulait.
Aurais-je mal compris, c'est très possible, mais peu importe il aura à sa disposition les deux solutions

Bon dimanche
 
P

Power SLIMAK

Guest
Re:Besoin d'aide sur une macro Excel pourtant simp

Bonjour Michel, Bonjour Jacques,

Vraiment mille fois merci pour votre aide, vous êtes les meilleurs !

Juste un petit renseignement concernant la solution de Jacques : ça marche nickel mais hélàs le bouton descend lui aussi quand on clique dessus. Comment faire pour le rendre fixe.

Encore merci pour tout !

Laurent
 
P

Power SLIMAK

Guest
Re:Besoin d'aide sur une macro Excel pourtant simp

Bonsoir Jacques, Bonsoir Michel,

C'est bien noté pour le bloquage du bouton. J'ai finalement appliqué la méthode de Michel mais il y a encore un petit souçi... En fait je voulais créer une correspondance entre les 3 cellules A1,B1 et C1 (qui servent donc à la copie) et 3 autres cellules d'un autre onglet (disons A4,A5 et A6 de l'onglet'test2'). Le problème c'est que lorsque l'on crée la correspondance, Excel colle la valeur 0 dans le tableau et non le contenu des cellules A1, B1 et C1... Par contre, sans correspondance, ça marche très bien. Il y a sans doute une explication mais je prefère laisser parler les pros ;)

Bien cordialement,

Laurent JERINTE
 

michel_m

XLDnaute Accro
Re:Besoin d'aide sur une macro Excel pourtant simp

Bonsoir Laurent, Jacques Forum

Normal la méthode copy 'copie' les formules et formats, donc tu as une relation avec ton onglet 'test2'

essaies comme ceci:

Sub compiler()
Dim lig As Long
dim plage as range

set plage=Range('A1:C1')

' 1° ligne vide
lig = Range('H65536').End(xlUp).Row + 1
' reporte le contenu des saisies
range(Cells(lig, 8),cells(lig,11))=plage.value

End Sub
Bonne soirée
Michel_M
 

michel_m

XLDnaute Accro
Re:Besoin d'aide sur une macro Excel pourtant simp

Bonsoir Laurent, Jacques Forum

Normal la méthode copy 'copie' les formules et formats, donc tu as une relation avec ton onglet 'test2'

essaies comme ceci:

Sub compiler()
Dim lig As Long
dim plage as range

set plage=Range('A1:C1')

' 1° ligne vide
lig = Range('H65536').End(xlUp).Row + 1
' reporte le contenu des saisies
range(Cells(lig, 8),cells(lig,11))=plage.value

End Sub
Bonne soirée
Michel_M
 
P

Power SLIMAK

Guest
Re:Besoin d'aide sur une macro Excel pourtant simp

Rebonsoir Michel,

Nickel ça marche au poil. Je vais maintenant positionner le bouton qui déclenche sur la macro sur le même onglet test2 que celui ou s'effectue la saisie par l'utilisateur. Que dois-je alors rajouter dans la macro ?

Franchement je me demande comment je ferai sans votre aide.

Mille fois merci pour votre patience et votre bienveillance

Et surtout longue vie à votre site !

Amicalement,

Laurent
 

michel_m

XLDnaute Accro
Re:Besoin d'aide sur une macro Excel pourtant simp

Re

Avant d'aller au dodo:

si tu dessines ton bouton avec la barre d'outils 'formulaire', Excel va te demander a quelle macro tu veux l'affecter ('compiler' dans mon exemple)

voilà c'est tout. Comme tu sembles débuter, utilise cette barre formulaire (il y en a une autre + puissante avec la boite à outils de VBA que peut-etre Jacques a utilisé mais à chaque jour etc etc)

Bonne semaine

Michel_M
 
P

Power SLIMAK

Guest
Re:Besoin d'aide sur une macro Excel pourtant simp

Bonjour Jacques, Bonjour Michel,

Je reviens sur mon histoire de logiciel pour mon club d'athlétisme. Grâce à votre aide, j'ai pu avancer pas mal et je vous en suis vraiment gré.

Hélàs je bute à nouveau sur une difficulté, plus ardue celle là. Je voulais savoir s'il est 'facile' de réaliser une macro qui fasse en sorte que lorsque l'on tape le numéro de dossard d'un coureur dans une cellule (ex A1), excel soit capable d'afficher dans d'autres cellules (ex B4,C4 et D4) les informations relatives au coureur (nom, prenom, temps de course etc...) Ca je crois savoir faire en utilisant la fonction RECHERCHEV d'Excel.
Le hic, c'est qu'il faudrait que l'utilisateur puisse par la même occasion actualiser via les mêmes cellules B4,C4 et D4 les informations d'un coureur (si par exemple il y des erreurs de nom, temps de course)...

Existe il une solution 'relativement' simple ?

D'avance un grand merci pour votre aide

Laurent
 

Discussions similaires

Réponses
7
Affichages
578

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb