1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
Private Sub btnAjout_Click()
Dim Chemin As String, Fichier As String
'Empêche le raffraichissement de l'écran
Application.ScreenUpdating = False 'cela ne change rien, mais c'est mieux de le faire apparaître avant tes instructions
'Chemin où se trouve le fichier à ouvrir
Chemin = "http://space.int.moi.ca/Coaching Logs/"
'Nom du fichier à ouvrir
Fichier = "test.xlsx"
'Ouverture du fichier
Workbooks.Open Chemin & Fichier
'Sheets("Sources").Activate 'inutile : tu peux enlever cette ligne
'Range("B2").Select 'inutile : tu peux enlever cette ligne
'Selection.End(xlDown).Select ' On se positionne sur la dernière ligne non vide
's'il une ligne est renseignée après B2 : cette ligne sera bien sélectionnée
'mais si aucune ligne n'est renseignée alors la ligne sélectionnée sera la dernière de la feuille (qui dépend de ta version d'Excel)
'ainsi avec :
'Debug.Print Range("B2").End(xlDown).Row le résultat sera 4 si la ligne 4 est renseignée et aucune autre après
'mais le résultat sera 1048576 (avec ma version d'Excel, je ne sais plus quelle version a vu la limite augmentée) si aucune ligne après la ligne 2
'est renseignée : autrement dit tu sélectionnes la dernière ligne de la feuille et il est impossible d'aller plus loin
'note : ctrl+G pour voir les résultats de Debug.Print entre autres
'Les lignes ci-dessus peuvent être remplacées par :
Range("B" & Rows.Count).End(xlUp).Select 'pour sélectionner mais si la sélection n'est pas utile, enlever la méthode .Select
'Debug.Print Range("B" & Rows.Count).Row va afficher 1048576 (la dernière ligne de la feuille)
'Debug.Print Range("B" & Rows.Count).End(xlUp).Row va afficher 1 si la colonne est vide ou le numéro de la première ligne renseignée
'rencontrée (qui est la dernière ligne renseignée)
'Selection.Offset(1, 0).Select ' On se décale d'une ligne vers le bas 'passer par l'objet sélection est inutile ; remplacer par :
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Select
'Ensuite, tu devrais évité tous les ActiveCell qui sont inutiles ici :
ActiveCell = cboAnnée & "-" & cboMois & "-" & cboJour 'là je ne sais pas ce que tu veux faire
'ActiveCell.Offset(0, 1).Value = cboConseiller
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = cboConseiller
'Idem pour la suite (sauf que l'offset sera toujours le même vu que la dernière ligne est réévaluée à chaque fois !) :
'ActiveCell.Offset(0, 2).Value = cboDir
Range("B" & Rows.Count).End(xlUp).Offset(1, 0).Value = cboDir
ActiveCell.Offset(0, 3).Value = cboCoach
ActiveCell.Offset(0, 4).Value = cboÉquipes
ActiveCell.Offset(0, 5).Value = cboSujet
ActiveCell.Offset(0, 6).Value = cboÉlémentDeCoaching
ActiveCell.Offset(0, 7).Value = txtCommentaire
ActiveCell.Offset(0, 8).Value = txtDateDeSuivi
'pour fermer le classeur que tu viens d'ouvrir et l'enregistrer
Workbooks(Fichier).Close True
'le raffraichissement de l'écran à true
Application.ScreenUpdating = True
MsgBox "Votre Coaching a bien été enregistré dans le coaching log", vbOKOnly + vbInformation, "CONFIRMATION"
End Sub |
Partager