Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2019Renseigner les lignes selon la saisie utilisateur
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Je souhaite renseigner les colonnes A et B avec les différentes saisie de l'utilisateur.
J'utilise range("A2").Value mais le but est de lui dire d'avancer dans les lignes selon l'itération.
* sélectionne la 1ère cellule où il faut faire une saisie, par exemple A3
* appuie sur la touche Maj et maintiens-là enfoncée ; clique sur la dernière cellule où il faut faire une saisie, par exemple B10 ➯ la plage A3:B10 a été sélectionnée, et la cellule active est A3.
* pour chaque nombre à saisir : saisis ce nombre, puis sans appuyer sur Entrée, appuie sur la touche TAB(Tabulation) ; c'est la touche qui est juste à gauche de la lettre "A" ; tu remarqueras que TAB fait un déplacement horizontal en avant : A3 ; B3 ; A4 ; B4 ; A5 ; B5 ; etc... ; après B10, ça retourne en A3 ; pour faire un déplacement horizontal en arrière : Maj TAB ; après A3, ça retourne en B10.
* si tu utilises à la place Entrée, ça fera un déplacement vertical en avant : A3 ; A4 ; A5 ; A6 ; etc... ; après A10, ça va en B3 ; puis B4 ; B5 ; B6 ; etc... ; après B10, ça retourne en A3 ; pour faire un déplacement vertical en arrière : Maj Entrée ; B10 ; B9 ; B8 ; B7 ; etc... ; après B3, ça retourne en A10 ; puis A9 ; A8 ; A7 ; etc... ; après A3, ça retourne en B10.
tout ce que je viens de décrire s'appelle une "saisie guidée" (à l'intérieur d'une sélection).
lis d'abord mon post #3 précédent. (c'est une solution sans macro, grâce à une "saisie guidée")
maint'nant, si vraiment tu préfères une solution avec macro, ouvre le fichier joint, et fais : Ctrl e
attention : pour la saisie d'un nombre décimal, tu peux taper au choix point « . » ou virgule « , » comme séparateur décimal ; le point est plus pratique car ça permet d'utiliser le point du pavé numérique (qui est plus proche des touches de chiffres 0 à 9 ; ça évite de devoir taper la virgule du clavier central : touche à droite de la touche « N »).
en principe, je n'pense pas qu'il y a des mesures négatives, mais au cas où, il te suffit de taper le caractère moins devant : touche moins « - » du pavé numérique ou tiret « - » du clavier central (au-dessus de la lettre « Y », et un peu à gauche).
pour le nombre de mesures, note que si tu entres 0 la boucle For ne sera pas exécutée, car de 1 à 0 : rien.
si tu veux saisir une nouvelle série de mesures, c'est inutile d'effacer les anciennes mesures : refais juste Ctrl e car l'effacement sera fait automatiquement par la macro.
VB:
Option Explicit
Sub Main()
Dim C#, E#, s$, n&, i&
n = Cells(Rows.Count, 1).End(3).Row
If n > 1 Then [A2].Resize(n - 1, 2).ClearContents
s = InputBox("Quel est le nombre de mesures ?")
n = Val(s)
For i = 1 To n
s = InputBox("Saisir la valeur client")
C = Val(Replace$(s, ",", "."))
s = InputBox("Saisir la valeur étalon")
E = Val(Replace$(s, ",", "."))
With Cells(i + 1, 1)
.Value = C: .Offset(, 1) = E
End With
Next i
End Sub
note bien que pour l'instant, la macro permet uniquement la saisie des mesures, sans faire dessus aucun traitement numérique ; si besoin, tu peux demander une adaptation ; par exemple l'affichage du total des mesures et / ou de la moyenne des mesures ; à afficher via MsgBox (ou sur la feuille de calcul) ; mais si tu préfères le faire toi-même en utilisant une calculatrice, no problem. 😁 😜
comme le dit sylvanu, tu aurais mieux fait de joindre un fichier Excel .xlsm plutôt qu'une image ! et on aurait pu te répondre plus vite ; tu as eu de la chance que ton image ne contienne ni trop de données, ni un code VBA très long, car sans ça, je n'aurais pas pris la peine de faire entièrement un fichier Excel à partir de rien.
Bonjour @sylvanu@soan
Je m'excuse pour la photo , j'avoue c'est compliqué sur photoshop @sylvanu 😅
Merci @soan je ne connaissais pas le terme "saisie guidée".
Je viens de voir ton document c'est exactement ça...maintenant ya plus qu'à comprendre le code 🙄
Pour le traitement...oui c'est seulement le début lol ...il va il avoir du traitement sur les valeurs en mV/V . J'étudie le code et je te fais un retour @soan🙂
lis d'abord mon post #3 précédent. (c'est une solution sans macro, grâce à une "saisie guidée")
maint'nant, si vraiment tu préfères une solution avec macro, ouvre le fichier joint, et fais : Ctrl e
attention : pour la saisie d'un nombre décimal, tu peux taper au choix point « . » ou virgule « , » comme séparateur décimal ; le point est plus pratique car ça permet d'utiliser le point du pavé numérique (qui est plus proche des touches de chiffres 0 à 9 ; ça évite de devoir taper la virgule du clavier central : touche à droite de la touche « N »).
en principe, je n'pense pas qu'il y a des mesures négatives, mais au cas où, il te suffit de taper le caractère moins devant : touche moins « - » du pavé numérique ou tiret « - » du clavier central (au-dessus de la lettre « Y », et un peu à gauche).
pour le nombre de mesures, note que si tu entres 0 la boucle For ne sera pas exécutée, car de 1 à 0 : rien.
si tu veux saisir une nouvelle série de mesures, c'est inutile d'effacer les anciennes mesures : refais juste Ctrl e car l'effacement sera fait automatiquement par la macro.
VB:
Option Explicit
Sub Main()
Dim C#, E#, s$, n&, i&
n = Cells(Rows.Count, 1).End(3).Row
If n > 1 Then [A2].Resize(n - 1, 2).ClearContents
s = InputBox("Quel est le nombre de mesures ?")
n = Val(s)
For i = 1 To n
s = InputBox("Saisir la valeur client")
C = Val(Replace$(s, ",", "."))
s = InputBox("Saisir la valeur étalon")
E = Val(Replace$(s, ",", "."))
With Cells(i + 1, 1)
.Value = C: .Offset(, 1) = E
End With
Next i
End Sub
note bien que pour l'instant, la macro permet uniquement la saisie des mesures, sans faire dessus aucun traitement numérique ; si besoin, tu peux demander une adaptation ; par exemple l'affichage du total des mesures et / ou de la moyenne des mesures ; à afficher via MsgBox (ou sur la feuille de calcul) ; mais si tu préfères le faire toi-même en utilisant une calculatrice, no problem. 😁 😜
comme le dit sylvanu, tu aurais mieux fait de joindre un fichier Excel .xlsm plutôt qu'une image ! et on aurait pu te répondre plus vite ; tu as eu de la chance que ton image ne contienne ni trop de données, ni un code VBA très long, car sans ça, je n'aurais pas pris la peine de faire entièrement un fichier Excel à partir de rien.
Bonjour,
Je te fais un retour sur le fichier,
J'ai laisser plein de commentaire (pour me reperer dans le code en tant que débutante j'en ai besoin😉 ).
Pour le coup je n'ai pas saisie toutes les lignes et de ce fait, en avançant sur le code je n'arrive pas à voir ce qui ne va pas.
J'ai laissé des points ??? sur les lignes où ça n'est pas clair. Peux-tu me les commenter ?
Clairement maitenant j'ai ces soucis là:
- j'ai insérer une nouvelle colonne ( du coup la saisie client se fait en colonne "palier de mesure") j'ai essayé de modifier le code sans succès.
- je souhaite initialiser la colonne "palier de mesure" avec en première ligne la capacité min (donnée saisie par l'utilisateur) puis les suivantes en faisant B2+ PALIER (palier étant la valeur calcul par le code).
Re,
je viens de refaire des tests, j'ai bien réussis à reculer l'écriture dans les bonnes colonnes 🙂
avec ce code: mais je souhaite que toutes les lignes et colonnes s'efface lorsqu'on relance le programme.
Sub Main()
'Déclaration variables
's valeur client et valeur étalon ou nombre de mesure???
'
Dim C#, E#, s$, n&, i&, Etalon$, Palier&, Max&, Min&
Max = InputBox("Entrez la capacité max")
Min = InputBox("Entrez la capacité min")
Palier = (Max - Min) / 9
Range("I1").Value = Application.RoundDown(Palier, -1) 'fonction pour tronquer la valeur de la variable palier
'Initialisation de la colonne "Palier de charge"
'A2=Palier
'A3 à A...selon n nombre mesure =A2+Palier
'Range("A2").Value = Palier
'effacer le contenu de toutes les lignes
n = Cells(Rows.Count, 1).End(3).Row
If n > 1 Then [A2].Resize(n - 1, 2).ClearContents 'je n'arrive pas à décaler sur la celulleB2
s = InputBox("Quel est le nombre de mesures ?")
n = Val(s) 'ici on affecte le nombre de mesure s à n???
For i = 1 To n
Etalon = InputBox("Quel étalon utilisez-vous")
s = InputBox("Saisir la valeur client")
C = Val(Replace$(s, ",", ".")) 'je ne comprends pas à quel moment au lui demande de mettre C en A2 et E en B2???
s = InputBox("Saisir la valeur étalon")
E = Val(Replace$(s, ",", "."))
With Cells(i + 1, 2)
.Value = C: .Offset(, 1) = E
End With
If i < n Then
MsgBox ("Passez au palier suivant")
End If
Bonsoir @soan j'étais à fond dans mon projet...j'ai pas mal bosser avec un collègue on a repris le code. C'est une autre façon de faire mais on obtiens la même chose.
Je suis sur la partie traitement des données, je bloque sur le calcul de la moyenne de cellules (3 cellules) B5, H5 et N5. J'ai des cellules sur les plages B5 à B14, je souhaite faire ligne par ligne la moyenne des colonnes B,H et N. Les résultats des moyennes sont dans une autre feuille en B5 à B14.
Je n'arrive pas à trouvé quelle fonction utiliser .
formules sur une feuille de calcul : =(B5+H5+N5)/3 ➯ moyenne = 40 ; OU : =MOYENNE(B5;H5;N5) ➯ moyenne = 40
en VBA, résultats sur "Feuil2", en A5 et C5 :
VB:
Sub Essai()
Worksheets("Feuil2").[A5] = ([B5] + [H5] + [N5]) / 3
Worksheets("Feuil2").[C5] = WorksheetFunction.Average([B5], [H5], [N5])
End Sub
tu dois pouvoir tout faire avec les infos ci-dessus ; sinon, comme il s'agit de quelque chose de très différent de ce sujet, c'est mieux que tu ouvres un autre sujet, en mettant un fichier plutôt qu'une image ; indique aussi quel est le nom de la feuille où il faut mettre les résultats, et dans quelles cellules. 🙂
si le présent sujet est résolu, merci de l'indiquer : il te suffit de cliquer sur la coche en forme de V du bord vertical droit du post qui a solutionné ton exo.
formules sur une feuille de calcul : =(B5+H5+N5)/3 ➯ moyenne = 40 ; OU : =MOYENNE(B5;H5;N5) ➯ moyenne = 40
en VBA, résultats sur "Feuil2", en A5 et C5 :
VB:
Sub Essai()
Worksheets("Feuil2").[A5] = ([B5] + [H5] + [N5]) / 3
Worksheets("Feuil2").[C5] = WorksheetFunction.Average([B5], [H5], [N5])
End Sub
tu dois pouvoir tout faire avec les infos ci-dessus ; sinon, comme il s'agit de quelque chose de très différent de ce sujet, c'est mieux que tu ouvres un autre sujet, en mettant un fichier plutôt qu'une image ; indique aussi quel est le nom de la feuille où il faut mettre les résultats, et dans quelles cellules. 🙂
si le présent sujet est résolu, merci de l'indiquer : il te suffit de cliquer sur la coche en forme de V du bord vertical droit du post qui a solutionné ton exo.
Bonjour,
Je vais essayer ce code mais je pense que ça marche seulement pour la ligne 5, je veux le faire pour les lignes de 5 à 14. Je pense qu'il faut impérativement une boucle for non?
Je vais le tester sinon oui j'ouvrirai une autre discussion 🙂
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD