Bouton rattaché à une macro

chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009 - 27 août 2008 à 21:31
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009 - 28 août 2008 à 17:54
Bonjour à tous,

Voici la situation :

J'ai une feuille qui s'appelle "Liste de soumission" et une autre "Liste de projet". Dans la feuille "Liste de soumission" j'ai un bouton à la fin de chaque ligne relié à une macro qui permet de créer un numéro de projet dans la feuille "Liste de projet" quand la soumission est accepté.

La seule chose que je ne sais pas, c'est comment lui dire que lorsqu'on appui sur le bouton, c'est les informations de cette ligne que je veux copier dans la feuille "Liste de projet"

J'espère que je suis assez clair !

Merci beaucoup pour votre attention !

Chantal

17 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 août 2008 à 21:49
Salut,

pour commencer tu n'es pas dans le bon theme ! Pour excel et plus generalement le VBA le bon theme est ici :

[infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_LANGAGES-DERIVES_287.aspx Langages dérivés] / [infomsgt_VBA_244.aspx VBA] /

Un bouton par ligne ?!?! wouahouuu !

Un seul bouton capable de detecter la ligne a copier cela t'irais ?

A+
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
27 août 2008 à 21:54
Salut,

Eh bien en fait c'est toujours le même bouton que je copie pendant la création de la nouvelle soumission et qui est rattaché à la macro Soumission accepté (qui créer le numéro de projet et tous les fichiers qui s'y rapporte)

Merci de ton aide !

Désolé pour le thème

Chantal
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 août 2008 à 21:59
donnes-nous plus d'info sur la ligne a copier(position, nombre de cellule, est ce que le nombre de cellule sera fixe etc) ainsi que la premiere cellule de destination(la colonne) et tout autre information
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
27 août 2008 à 22:06
Il va avoir le nom à copier et la description de la feuille "Liste de soumission" vers la feuille "Liste de projet". Les deux cellules à copier sont celles qui correspondent à la soumission accepté et elle doivent être copier à la suite des projets déjà créer (pour cette dernière, je sais comment m'y prendre).

Les cellules à copier se trouvent toujours dans la colonne B et C

Voilà !

Chantal
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 août 2008 à 22:43
A mettre dans le code de la feuille qui contient le bouton et j'insiste sur le fait qu'un seul bouton simplifira la tache.
Comme je ne connais pas la colonne de destination de la feuille liste de projet je suppose que ce sera en colonne A

Private Sub CommandButton1_Click()
    Dim LigneACopier As Long, DernierValeur As Long, CellulesSource As String
    Dim Reponse As Long
    'sur quelle ligne somme nous ?
    LigneACopier = ActiveCell.Row
    CellulesSource = "B" & LigneACopier & ":C" & "LigneACopier"
    'on affiche un message pour confirmation
    Reponse = MsgBox("etes-Vous certain(e) de vouloir soumettre la ligne " & LigneACopier & "? ", vbExclamation + vbYesNo)
    If Reponse = 7 Then Exit Sub '7 correspond a non. Donc si non on arrete tout
    'recherche de la premiere cellule vide a partir de la derniere cellule non vide
    DernierValeur = Worksheets("Liste de projet").Column("A").Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1
    'on copie
    Worksheets("Liste de projet").Range("A" & DernierValeur & ":B" & DernierValeur).Value = AciveSheet.Range(CellulesSource).Value
End Sub

Comment cela marche ? et bien il suffit de selectionner n'importe quelle cellule de la ligne a copier puis de cliquer sur le bouton

J'ai ecris ce code en direct ici donc je ne l'ai pas testé. Tient moi au courant
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
27 août 2008 à 22:53
Salut,

bigfish_le vrai salut, pour la msgbox, tu peux utiliser les constantes de VB pour vérifier la réponse : VbYes et VbNo

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
27 août 2008 à 23:07
thème topic : déplacé de VB.NET vers VBA

ps : un + s'est glissé dans le code par erreur, à la place d'un or. saurez-vous le retrouver?
indice : il n'y en a qu'un
(en effet alors pas non plus besoin de stoquer le résultat)
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 août 2008 à 23:15
Salut Explorer, ah oui tu as farpaitement raison comme je l'ai fait en direct je suis pas aller voir les constantes

donc :

If Reponse = VbNo Then Exit Sub 'Si non on arrete tout
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
27 août 2008 à 23:29
Salut,
plus "farpaitement"  raison

If MsgBox("etes-Vous certain(e) " & _
" de vouloir soumettre la ligne " & _
LigneACopier & "? ", vbExclamation + _
 vbYesNo) =vbNo Then Exit Sub

Fallait pas m' inviter !
<hr />

[*] Ce qui va sans dire. va mieux en le disant.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
27 août 2008 à 23:35
oui d'accord mais... moi j'aime bien une variable pour ce genre de chose car je trouve que cela simplifi la lecture du code

Mais ! on la pas invité... il a du rentrer par la porte de derriere
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
28 août 2008 à 10:05
Re,

Et pour répondre à PCPT par rapport à son post, voici le + à remplacer par un Or :

If MsgBox("etes-Vous certain(e) " & _
" de vouloir soumettre la ligne " & _
LigneACopier & "? ", vbExclamation OR _
 vbYesNo) =vbNo Then Exit Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
28 août 2008 à 14:02
Merci beaucoup pour votre aide !

Je suis du Québec, alors je viens à peine d'arriver au travail. Je vérifie vos informations et je vous reviens.

Chantal
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
28 août 2008 à 15:16
J'ai fait le test et j'ai un petit problème

Lorsqu'il demande la cellule à copier, il est sur la cellule dans la feuille Liste de projet, mais je dois copier les cellules de la feuille Liste de soumission et ce n'est pas toujours la dernière ligne de donnée, il faut copier la ligne de la soumission acceptée.

Voici la macro :

Sub Soumission_acceptée()


'Définition des variables
    Dim index, projet
    Dim LigneACopier As Long
    Dim CellulesSouce As String
    Dim Reponse As Long
   
'Inscription des spécifications du projet
    Sheets("Échéanciers").Select
    Range("F1").Select
    index = ActiveCell.Value
    ActiveCell.FormulaR1C1 = index + 1
    Range("C" & index - 1).Select
    projet = ActiveCell.Value
    projet = Right(projet, 4) + 1
    projet = "R" & IIf((projet < 1000), "0", vbNullString) & projet
    MsgBox "Nouveau projet :" & projet
    Range("C" & index).Select
    ActiveCell.FormulaR1C1 = projet
   
    'Sur quelle ligne somme nous ?
    LigneACopier = ActiveCell.Row
    CellulesSource = "B" & LigneACopier & ":C" & "LigneACopier"
    'On affiche un message pour confirmation
    Réponse = MsgBox("Êtes-vous certain (e) de vouloir soumettre la ligne " & LigneACopier & "?", vbExclamation + vbYesNo)
    If Reponse = vbNo Then Exit Sub 'Si non on arrête tout.
    'On copie
    Worksheets("Liste des projets").Range("B" & index).Value = ActiveSheet.Range(CellulesSource).Value
   
End Sub

À quelle endroit ça ne va pas ?

Merci beaucoup pour votre aide !

Chantal
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
28 août 2008 à 16:16
Salut,
variable projet, Integer ou string ?

projet = Right(projet, 4) + 1
ça ne va pas si c' est String
 il y' a aussi le
projet = "R" & IIf((projet < 1000), "0", vbNullString) & projet

il y a confusion des genres !
<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
28 août 2008 à 16:26
Pour ce bout là tout est OK, je l'utilise dans une autre macro et ça fonctionne très bien.

Chantal
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
28 août 2008 à 17:13
D'accord avec LIBRE_MAX (voir la partie bleu). Pour le reste j'ai simplifié le code et surtout supprimé tout les select, activecell et autre FormulaR1C1 qui ne servent à rien !
ATENTION !!! tout les point dans le code sont :

O B L I G A T O I R !

Sub Soumission_acceptée() 'Définition des variables  <--------- evite d'utiliser les characteres accentués dans du code donc prefere : Soumission_acceptee
    Dim index, projet
    Dim LigneACopier As Long
    Dim CellulesSouce As String
    Dim Reponse As Long
   
'Inscription des spécifications du projet

    With Sheets("Échéanciers")
         index = .Range("F1").Value
         projet = Right(.Range("C" & index).Value, 4) + 1
         projet = "R" & IIf((Clng(projet) < 1000), "0", vbNullString) & projet
         .Range("C" & index).Value = projet
         .Range("F1").Value = .Range("F1").Value +1
    End With
    MsgBox "Nouveau projet :" & projet
   
    'Sur quelle ligne somme nous ?
    LigneACopier = ActiveCell.Row
    CellulesSource = "B" & LigneACopier & ":C" & "LigneACopier"
    'On affiche un message pour confirmation
   
Réponse = MsgBox("Êtes-vous certain (e) de vouloir soumettre la ligne "
& LigneACopier & "?", vbExclamation + vbYesNo)
    If Reponse = vbNo Then Exit Sub 'Si non on arrête tout.
    'On copie
    Worksheets("Liste des projets").Range("B" & index).Value = ActiveSheet.Range(CellulesSource).Value
 End Sub

Si non je n'ai pas completement compris le probleme !
- le bouton qui pertmet de faire la copie il est sur quelle feuille ?
- qu'est-ce qui te permet de savoir qu'une soumission a été acceptée ?
0
chan33 Messages postés 36 Date d'inscription lundi 25 août 2008 Statut Membre Dernière intervention 5 février 2009
28 août 2008 à 17:54
C'est certain que je prends peut-être des chemins plus long pour arriver à mes fins, mais je suis parfaitement nouvelle dans la programmation avec aucune connaissance et aucune expérience. C'est ma première expérience et je trouve comment faire un peu partout sur le forum. Alors tant que ça fait la job, j'en suis bien heureuse.


J'ai continué à travailler sur cette macro et j'ai trouvé ce que j'avais de besoin. Le voici donc :


   'On sélectionne la feuille
    Sheets("Liste des soumissions").Select
   
    'On demande de sélectionner une ligne
   
    Set Result = Application.InputBox("Sélectionner la description et le nom du client à copier", "Sélection", , , , , », 8)
   
    'On récupère le no de la ligne dans le cas où une cellule est sélectionnée
    LigneSelected = Result.Row
 
    'On sélectionne les cellules de la ligne concernée
    ActiveSheet.Range("B" & LigneSelected & ":C" & LigneSelected).Select
   
    'On copie
    Worksheets("Liste des soumissions").Range("B" & LigneSelected & ":C" & LigneSelected).Copy _
    Destination:=Worksheets("Échéanciers").Range("D" & index & ":E" & index)

Merci pour la simplification de la création du numéro de projet

Chantal
0
Rejoignez-nous