Macro Recherche et Saisie auto

nicoland

XLDnaute Nouveau
Bonjour à tous!

J'aurais besoin d'aide sur une macro. Je dispose d'un tableau (que je vous met en pièce jointe) regroupant diverses infos (numéro de ligne, date, libéllé du travail, prix, facturé). Ce tableau rsique d'être très grand à l'avenir.

Je voudrais disposer d'une macro (que j'associerais à un bouton) qui, en fonction du numéro de ligne entré dans la celulle H1 me mettte automatiquement "OK" dans la colonne "Facturé" de la ligne correspondante.

Ex: si dans H1 je met 154 (ET que je lance la macro), je voudrais que dans la cellule E154 se marque automatiquement "OK".

Merci bcp
nicoland
 

Pièces jointes

  • exemple.zip
    18.6 KB · Affichages: 38
  • exemple.zip
    18.6 KB · Affichages: 38
  • exemple.zip
    18.6 KB · Affichages: 28

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro Recherche et Saisie auto

Bonjour Nicoland, bonjour le forum,

Dans ton fichier j'ai utilisé la macro événementielle Change avec le code suivant :
Code:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Address <> "$H$1" Then Exit Sub 'si le changement a lieu ailleurs qu'en H1, sort de la procédure
If Target.Value = "" Then Exit Sub 'si H1 est effacé, sort de la procédure
Cells(Target.Value, 5).Value = "OK" 'écrit "OK" à l'endroit indiqué
End Sub
 

Pièces jointes

  • nicoland.zip
    22.3 KB · Affichages: 49

Gorfael

XLDnaute Barbatruc
Re : Macro Recherche et Saisie auto

nicoland à dit:
Bonjour à tous!

J'aurais besoin d'aide sur une macro. Je dispose d'un tableau (que je vous met en pièce jointe) regroupant diverses infos (numéro de ligne, date, libéllé du travail, prix, facturé). Ce tableau rsique d'être très grand à l'avenir.

Je voudrais disposer d'une macro (que j'associerais à un bouton) qui, en fonction du numéro de ligne entré dans la celulle H1 me mettte automatiquement "OK" dans la colonne "Facturé" de la ligne correspondante.

Ex: si dans H1 je met 154 (ET que je lance la macro), je voudrais que dans la cellule E154 se marque automatiquement "OK".

Merci bcp
nicoland
Salut
Macro demandée (saisie par boite de dialogue, au lieu de H1
PHP:
Sub Ligne_Fact()
Dim Rep As String
Rep = InputBox("N°ligne à facturer ?", "CLOTURE DE FACTURE")

If IsNumeric(CLng(Rep)) Then
    If CLng(Rep) < 1 Or CLng(Rep) > 65536 Then
        MsgBox ("ce n'est pas un nombre valide" & Chr(13) & CLng(Rep) & Chr(13) & "recommencez")
        Exit Sub
    End If
    If CLng(Rep) > Range("C65536").End(xlUp).Row Then
        MsgBox ("la ligne mentionnée ne comporte pas de libéllé")
        Range("A" & CLng(Rep)).Activate
        Exit Sub
    End If
    Range("E" & CLng(Rep)) = "OK"
Else
    MsgBox ("ce n'est pas un nombre" & Chr(13) & "recommencez")
    Exit Sub
End If
End Sub
Mais plusieurs questions :
Ligne te sets à quelque chose ? parce que comme c'est le reflet de la ligne Excel, je ne teste pas

Faut-il vérifier la validité de l'opération, soit en sélectionnant le cellule à remplir et en l'affichant ou en donnant le libéllé ou en vérifiant l'absence de "OK" ?

Ne serait-il pas préférable de tester sur le travail (libéllé) ou le numéro du travail, plutot que sur la ligne ?
A+
 

nicoland

XLDnaute Nouveau
Re : Macro Recherche et Saisie auto

merci Gorfael pour toute ces précisions.
Je suis d'accrod avec toi dans ce cas comment pourrais-ton fonctionner ac un numéro de travail (celui serait donc différent du numéro de ligne)

Je pense que tu as raison Gorfael:
- Est-il possible d'afficher un message lorsque l'entré dans le Userform ne comporte aucune saisie (actuellement çà bug)?
- Pourrais-t-on aussi faire un message comme quoi la ligne a bien été validé (ex: "la ligne 158 a bien été validé") en donnant aussi le libéllé du travail dans le message ?
- Afficher la cellule

MERCI POUR TOUT
 

Gorfael

XLDnaute Barbatruc
Re : Macro Recherche et Saisie auto

nicoland à dit:
merci Gorfael pour toute ces précisions.
Je suis d'accrod avec toi dans ce cas comment pourrais-ton fonctionner ac un numéro de travail (celui serait donc différent du numéro de ligne)

Je pense que tu as raison Gorfael:
- Est-il possible d'afficher un message lorsque l'entré dans le Userform ne comporte aucune saisie (actuellement çà bug)?
- Pourrais-t-on aussi faire un message comme quoi la ligne a bien été validé (ex: "la ligne 158 a bien été validé") en donnant aussi le libéllé du travail dans le message ?
- Afficher la cellule

MERCI POUR TOUT
Re...
Alors une autre macro
PHP:
Sub Ligne_Fact()
Dim Rep As Long
Dim X As Long
Dim Flg_Rep As Boolean

'Réception numéro
Rep = Application.InputBox("N°Travail à facturer ?" & Chr(13) & _
        "(juste le nombre)", "CLOTURE DE FACTURE", , , , , , 1)
If Rep = 0 Then Exit Sub
'Recherche de la ligne de travail
For X = 2 To Range("C65536").End(xlUp).Row
    If "Travail " & Rep = Range("C" & X) Then
        Flg_Rep = True
        Exit For
    End If
Next X
'pas de correspondance
If Flg_Rep = False Then
    MsgBox ("Pas de travail correspondant à " & Rep)
    Exit Sub
End If
'ça correspond
Rep = MsgBox(Chr(13) & "Cest bien le travail : " & Range("C" & X) & Chr(13) & _
    "pour un prix de " & Range("D" & X) & " € que vous voulez facturer ?", _
    vbQuestion + vbYesNo, "Facturation")
If Rep = 6 Then
    Range("E" & X) = "OK"
    Range("E" & X).Activate
Else
    MsgBox ("Tant pis !!!")
End If
End Sub
Là, input box n'est plus une fonction, mais une méthode d'Excel : On peut contrôler le Type de retour, et avec 1 (après la série de virgule qui concerne position, défaut, etc. voir aide), tout retour autre que nombre sera détecté comme une erreur

je pose la question de confirmation avant d'effectuer l'opération, ça me semble plus logique que de dire "c'est pas celle-là que tu voulais ? Dommage" :)

Il ne te rest qu'à essayer
A+
 
Dernière édition:

Discussions similaires

Réponses
20
Affichages
2 K

Statistiques des forums

Discussions
312 493
Messages
2 088 946
Membres
103 989
dernier inscrit
jralonso