Saisie étirée sur plusieurs cellules en InputBox

Y compris Power BI, Power Query et toute autre question en lien avec Excel
l
liod
Membre habitué
Membre habitué
Messages : 95
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 17 septembre 2019, 14:01

Bonjour à tous !

Je n'arrive pas à finalisé une macro... :cry: . En faite je voudrais créer un Inputbox! Je voudrais que ce dernier en fonction de la valeurs que je mets dedans me retranscrive la saisie de dans la colonne O (à partir de la ligne 2) et m'étire cette valeur par rapport aux valeurs saisie en colonne A de mon tableau.

Je m'y prends mal je suis bloqué ici :
Sub Mouvement()
Dim MVT As String
Rep = InputBox("Quel est le numéro de mouvement pour vos écritures?", "")
Range("o2", "o" & ligFin) = MVT

End Sub
Je ne sais pas si vous avez compris ma demande.

Merci d'avance pour votre aide.
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'125
Appréciations reçues : 345
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 17 septembre 2019, 14:12

Rebonjour :)

Si je regarde ton programme, c'est normal que ça ne fonctionne pas:
Sub Mouvement()
Dim MVT As String 'MVT = "" / Rep = ""
Rep = InputBox("Quel est le numéro de mouvement pour vos écritures?", "") 'MVT = "" / Rep = ""
Range("o2", "o" & ligFin) = MVT 'MVT = "" / Rep = InputBox
End Sub
Tu affectes MVT en valeur pour tes cellules, mais tu enregistres le résultat sous une variable Rep que tu n'utilises pas par la suite, si tu fais:
Sub Mouvement()
Dim MVT As String 'MVT = ""
MVT = InputBox("Quel est le numéro de mouvement pour vos écritures?", "") 'MVT = ""
Range("o2", "o" & ligFin) = MVT 'MVT = InputBox
End Sub
ça devrait mieux marcher, mais on peut directement écrire:
Sub Mouvement()
Range("o2", "o" & ligFin) = InputBox("Quel est le numéro de mouvement pour vos écritures?", "")
End Sub
Cette dernière écriture ne marche que si tu n'as pas besoin de contrôler la valeur retournée par l'InputBox, si tu as besoin de contrôler, c'est plutôt l'avant dernière version du programme qui sera à utiliser :)
:btres:
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
l
liod
Membre habitué
Membre habitué
Messages : 95
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 17 septembre 2019, 14:42

Ausecour a écrit :
17 septembre 2019, 14:12
Rebonjour :)

Si je regarde ton programme, c'est normal que ça ne fonctionne pas:
Sub Mouvement()
Dim MVT As String 'MVT = "" / Rep = ""
Rep = InputBox("Quel est le numéro de mouvement pour vos écritures?", "") 'MVT = "" / Rep = ""
Range("o2", "o" & ligFin) = MVT 'MVT = "" / Rep = InputBox
End Sub
Tu affectes MVT en valeur pour tes cellules, mais tu enregistres le résultat sous une variable Rep que tu n'utilises pas par la suite, si tu fais:
Sub Mouvement()
Dim MVT As String 'MVT = ""
MVT = InputBox("Quel est le numéro de mouvement pour vos écritures?", "") 'MVT = ""
Range("o2", "o" & ligFin) = MVT 'MVT = InputBox
End Sub
ça devrait mieux marcher, mais on peut directement écrire:
Sub Mouvement()
Range("o2", "o" & ligFin) = InputBox("Quel est le numéro de mouvement pour vos écritures?", "")
End Sub
Cette dernière écriture ne marche que si tu n'as pas besoin de contrôler la valeur retournée par l'InputBox, si tu as besoin de contrôler, c'est plutôt l'avant dernière version du programme qui sera à utiliser :)
:btres:
Rebonjour !

Toujours à l’affût :) Ah d'accord merci mais j'ai quand même un message d'erreur : "Erreur d'execution '1004' m La méthode 'RAnge' de l'objet '_Global' a échoué... ::( ::(
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'125
Appréciations reçues : 345
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 17 septembre 2019, 15:00

Re,

Peux-tu joindre ton fichier avec le code final? :roll:
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
l
liod
Membre habitué
Membre habitué
Messages : 95
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 17 septembre 2019, 15:17

Ausecour a écrit :
17 septembre 2019, 15:00
Re,

Peux-tu joindre ton fichier avec le code final? :roll:
Oui voilà
'
' COMPTAGED Macro
'

'
    Rows("2:4").Select
    Range("P2").Activate
    Selection.UnMerge
    Rows("4:4").Select
    Range("P4").Activate
    Selection.delete Shift:=xlUp
    Rows("3:3").Select
    Range("P3").Activate
    Selection.delete Shift:=xlUp
    Rows("1:1").Select
    Range("J1").Activate
    Selection.delete Shift:=xlUp
    Columns("A:A").Select
    Selection.NumberFormat = "dd/mm/yy;@"
    Call ReportCredit
    Call Mouvement
    Selection.Replace What:="/", Replacement:="/", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
    ChDir "X:\ASSO Editions comptables"
    ActiveWorkbook.SaveAs Filename:="X:\ASSO Editions comptables\COMPTAGED.csv", _
        FileFormat:=xlCSV, CreateBackup:=False
End Sub
Le code de l'input box est appelé est à part et appeler en "Call Mouvement"

Merci d'avance :)
export.xlsx
(13.25 Kio) Téléchargé 1 fois
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'125
Appréciations reçues : 345
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 17 septembre 2019, 15:54

Re,

Malheureusement les programmes que tu appelles ne sont pas présents dans le fichier joint, et je n'ai pas leur code... :bof:
Ce que je veux vérifier, c'est que dans la partie qui ne marche pas, tu aies bien tout qui soit bon: variable avec valeur affectée, valeur bonne etc...
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
l
liod
Membre habitué
Membre habitué
Messages : 95
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 18 septembre 2019, 09:40

Ausecour a écrit :
17 septembre 2019, 15:54
Re,

Malheureusement les programmes que tu appelles ne sont pas présents dans le fichier joint, et je n'ai pas leur code... :bof:
Ce que je veux vérifier, c'est que dans la partie qui ne marche pas, tu aies bien tout qui soit bon: variable avec valeur affectée, valeur bonne etc...
Vraiment désolé les codes appelés sont les suivants :
Sub ReportCredit()
Dim ligFin As Long
ligFin = Range("a" & Rows.Count).End(xlUp).Row
'copie des dates de facture et N°Pièce
Range("a2", "b" & ligFin).Copy
Range("a" & ligFin + 1).Select
ActiveSheet.Paste
'copie des n°compte à créditer
Range("h2", "h" & ligFin).Cut
Range("h" & ligFin + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Copie des codes de journaux
Range("l2", "l" & ligFin).Copy
Range("l" & ligFin + 1).Select
ActiveSheet.Paste
'Copie des libéllés
Range("n2", "n" & ligFin).Copy
Range("n" & ligFin + 1).Select
ActiveSheet.Paste
'Couper les numéros de compte à créditer
Range("g2", "g" & ligFin).Cut
Range("e" & ligFin + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
et le code que tu as fait :
Sub Mouvement()
Dim MVT As String 'MVT = ""
MVT = InputBox("Quel est le numéro de mouvement pour vos écritures?", "") 'MVT = ""
Range("o2", "o" & ligFin) = MVT 'MVT = InputBox
End Sub
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'125
Appréciations reçues : 345
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 18 septembre 2019, 11:14

Bonjour,

Ah eh bien c'est normal alors que tu aies un souci, comme tu as décidé de mettre des sous programmes, tu n'as pas fais attention à la conservation des valeurs des variables, tu utilises donc la variable ligFin dans Sub Mouvement(), sachant que cette variable n'existe que dans le sous programme Sub ReportCredit().

En clair, elle vaut "" dans Sub Mouvement(), donc soit tu mets le code de Sub Mouvement dans Sub ReportCredit pour utiliser la variable, soit tu trouves un moyen de lui passer l'information, soit tu recalcules le numéro de ligne.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté :bien:
"100% des gagnants auront tenté leur chance" :trfl:
l
liod
Membre habitué
Membre habitué
Messages : 95
Inscrit le : 3 avril 2013
Version d'Excel : 2007

Message par liod » 20 septembre 2019, 12:17

Ausecour a écrit :
18 septembre 2019, 11:14
Bonjour,

Ah eh bien c'est normal alors que tu aies un souci, comme tu as décidé de mettre des sous programmes, tu n'as pas fais attention à la conservation des valeurs des variables, tu utilises donc la variable ligFin dans Sub Mouvement(), sachant que cette variable n'existe que dans le sous programme Sub ReportCredit().

En clair, elle vaut "" dans Sub Mouvement(), donc soit tu mets le code de Sub Mouvement dans Sub ReportCredit pour utiliser la variable, soit tu trouves un moyen de lui passer l'information, soit tu recalcules le numéro de ligne.
Oui c'était donc ça le problème j'ai résolu mon problème grâce à toi et j'ai réussi à comprendre surtout encore merci :)
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message