Boucle et insertion de valeur
Résolu
Ch1ken
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
Ch1ken Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
Ch1ken Messages postés 53 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Boucle et insertion de valeur
- Insertion sommaire word - Guide
- Touche insertion clavier - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
- Insertion signature word - Guide
3 réponses
Bonjour,
Pour bien débuter en VBA, pense à ne jamais utiliser .Select en boucle.
Regarde ce que fait ce code et si cela te convient :
Pour bien débuter en VBA, pense à ne jamais utiliser .Select en boucle.
Regarde ce que fait ce code et si cela te convient :
Sub Submit() Dim HeureSaisie HeureSaisie = Range("HourProject").Value With Sheets("HProgrammation") .Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie End With End Sub
Bonjour Pijaku,
Merci beaucoup pour ta réponse, ton code fonctionne parfaitement !
Pourrais-tu, si tu as le temps et que tu le veux bien, m'expliquer brièvement ton code ?
Merci encore et bonne journée !
Cordialement,
Ch1ken
Merci beaucoup pour ta réponse, ton code fonctionne parfaitement !
Pourrais-tu, si tu as le temps et que tu le veux bien, m'expliquer brièvement ton code ?
Merci encore et bonne journée !
Cordialement,
Ch1ken
Pas de souci.
Ce bloc nous a permis de travailler sans changer de feuille active...
Dim HeureSaisie: Décaration d'une variable. Ici je ne l'ai pas typée ne sachant pas quel type de valeur (date, nombre, caractères, etc) celle-ci devait contenir.
HeureSaisie = Range("HourProject").Value: Stocke, dans notre variable, la valeur contenue dans la cellule nommée HourProject
With Sheets("HProgrammation"): Indique au programme que nous allons travailler sur l'objet référencé. Ici l'objet est la feuille HProgrammation. Nous n'activons pas cette feuille, c'est inutile. ==> Pas de Select, pas d'Activate...
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie: Ici, on dit que la valeur
valuede la cellule en dessous de
Offset(1, 0)la dernière cellule remplie de la colonne 1
Columns(1).Find("*", , , , , xlPrevious)est égale au contenu de notre variable
= HeureSaisie.
End With: Fin du bloc With, on ne travaille plus sur l'objet.
Ce bloc nous a permis de travailler sans changer de feuille active...
Dans le code que tu m'as fourni, pour rappel :
Sub submit()
Dim HeureSaisie
HeureSaisie = Range("HourProject").Value
With Sheets("HProgrammation")
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Est-il possible de changer la nomination de la page "HProgrammation" par une cellule ? Je m'explique, les heures saisies doivent l'être sur 3 cours différents et le cours de programmation est le premier cours. Dans la page de saisie, j'ai créé une liste déroulante avec les 2 autres cours. J'aurai aimé que les données viennent s'inscrire dans la page correspondante au cours que l'utilisateur aura sélectionné.
J'ai tenté de nommer cette cellule et de changer la feuille dans ton code :
With Sheets(CoursePage)
CoursePage étant le nom de la cellule qui contient le nom du cours, mais cette méthode ne fonctionne pas. J'aurais également aimé pouvoir changer le numéro de colonne à la ligne juste avant le "End With" de la même manière car chaque colonne représente 1 mois. La colonne 1 se rapporte à Août 2016 mais Septembre devrait se trouver dans la 2ème colonne.
Je ne sais pas si j'ai été assez clair ?
Ce serait vraiment très aimable de me répondre encore une fois de plus.
Merci d'avance et très bonne journée.
Amicalement,
Ch1ken
Sub submit()
Dim HeureSaisie
HeureSaisie = Range("HourProject").Value
With Sheets("HProgrammation")
.Columns(1).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Est-il possible de changer la nomination de la page "HProgrammation" par une cellule ? Je m'explique, les heures saisies doivent l'être sur 3 cours différents et le cours de programmation est le premier cours. Dans la page de saisie, j'ai créé une liste déroulante avec les 2 autres cours. J'aurai aimé que les données viennent s'inscrire dans la page correspondante au cours que l'utilisateur aura sélectionné.
J'ai tenté de nommer cette cellule et de changer la feuille dans ton code :
With Sheets(CoursePage)
CoursePage étant le nom de la cellule qui contient le nom du cours, mais cette méthode ne fonctionne pas. J'aurais également aimé pouvoir changer le numéro de colonne à la ligne juste avant le "End With" de la même manière car chaque colonne représente 1 mois. La colonne 1 se rapporte à Août 2016 mais Septembre devrait se trouver dans la 2ème colonne.
Je ne sais pas si j'ai été assez clair ?
Ce serait vraiment très aimable de me répondre encore une fois de plus.
Merci d'avance et très bonne journée.
Amicalement,
Ch1ken
Merci pour ta réponse Pijaku mais ca ne fonctionne malheureusement pas :(
Voici l'intitulé de l'erreur : "Run-time error '1004':
Method 'Range' of object '_Global' failed"
MODIF : Non je n'ai rien dit, il s'agissait en fait du nom de cellule CoursPage, voilà la raison de l'erreur :)
S'agit-il de la même logique pour le numéro de colonne ? J'imagine... je vais tester et rendre réponse ici.
Quoi qu'il en soit, merci encore à toi Pijaku pour ton super soutien !
Voici l'intitulé de l'erreur : "Run-time error '1004':
Method 'Range' of object '_Global' failed"
MODIF : Non je n'ai rien dit, il s'agissait en fait du nom de cellule CoursPage, voilà la raison de l'erreur :)
S'agit-il de la même logique pour le numéro de colonne ? J'imagine... je vais tester et rendre réponse ici.
Quoi qu'il en soit, merci encore à toi Pijaku pour ton super soutien !
Voilà, le code fonctionne parfaitement, j'ai même encore rajouté un bouton (macro delete) qui permet de supprimer la dernière entrée du tableau. Voici mon code :
Merci encore pijaku et bonne journée à tout le monde !
Sub submit()
Dim HeureSaisie
Dim Page As String
Dim Column As Integer
HeureSaisie = Range("HourProject").Value
Page = Range("CoursPage").Value
Column = Range("ColumnMonth").Value
With Sheets(Page)
.Columns(Column).Find("*", , , , , xlPrevious).Offset(1, 0).Value = HeureSaisie
End With
End Sub
Sub Delete()
Dim Page As String
Dim Column As Integer
Page = Range("CoursPage").Value
Column = Range("ColumnMonth").Value
With Sheets(Page)
.Columns(Column).Find("*", , , , , xlPrevious).ClearContents
End With
End Sub
Merci encore pijaku et bonne journée à tout le monde !