Export calendrier en CSV

Bonjour à tous,

Afin de pouvoir transformer un calendrier d'un club sportif en agenda google, j'aimerais créer un "bouton" me permettant de me faciliter la vie.

J'ai codé cette macro, mais j'ai cette erreur qui m'est signalée.

Qui peut m'aider ?

Merci beaucoup

capture d ecran 2023 06 17 a 11 51 55

bonjour,

la feuille "Export_CSV" existe dans ce fichier ? Sinon, il faut la créer ...

Que se passe-t-il si on remplace par :

ActiveSheet.Range("A2","I" & Dernligne).Copy Destination:=Worksheets("Export_CSV").Range("A1")

Bonjour,

La feuille "Export_CSV" est créée dans un fichier séparer. Je ne sais pas comment je dois faire le lien entre les deux

hello,
what's the name of the new workbook ?

ActiveSheet.Range("A2","I" & Dernligne).Copy workbooks("NewWorkbookName").Worksheets("Export_CSV").Range("A1")

@Optimix, rien du tout :/

On peut avoir le fichier ?

Je n'arrive pas à l'envoyer. Même réduit et compressé il fait 36,5 Mo. Je n'arrive pas à le réduire plus :/

capture d ecran 2023 06 17 a 20 48 32
9export.xlsm (40.69 Ko)

Votre code corrigé avec des explications utiles in fine. Vous pouvez tester le code avec les n° de ligne, VB les considèrera comme des étiquettes et les traitera comme des remarques.

Option Explicit

Sub Export()
1    Dim teamSelected As String, S As String
2    Dim wS As Worksheet, SheetTeamSelected As Worksheet
3    Dim i As Byte, j As Byte, buffer As Byte
4    Dim Dernligne As Integer
5    Dim sheetExists As Boolean

' On demande la team que l'on désire exporter
6   teamSelected = UCase(InputBox("Veuillez noter l'équipe que vous désirez exporter.", "Export vers l'agenda Google"))
7    sheetExists = False
8    For Each wS In ThisWorkbook.Sheets
9        If wS.Name = teamSelected Then
10            sheetExists = True
11           Exit For
12        End If
13    Next wS
14    If Not sheetExists Then
15        MsgBox "Cette feuille n'existe pas.", vbCritical + vbOKOnly, "Erreur de saisie"
16        Exit Sub
17    End If

18    Set SheetTeamSelected = Sheets(teamSelected)

' On sélectionne le bon onglet
19    Worksheets(teamSelected).Activate
' On copie la feuille active vers la feuille d'export
    ' On définit le numéro de la dernière ligne
20    Dernligne = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
    ' On copie
21     ActiveSheet.Range("A2", "I" & Dernligne).Copy Destination:=Worksheets("Export CSV").Range("A1")
' On met en forme les colonnes de la feuille d'export
22    Call MiseEnPageAvantExport
' On exporte les données
23 S = ""
24    For i = 1 To Dernligne
25        For j = 1 To 8
26            S = S & Cells(i, j).Text & ","
27        Next j
28        S = S & Cells(i, 9).Value & vbCrLf
29    Next i
    ' Open ActiveWorkook.Path & "/xprt.csv" for output as #1
30   buffer = FreeFile
31        Open ActiveWorkbook.Path & Application.PathSeparator & teamSelected & ".csv" For Output As #buffer
32            Print #buffer, S
33        Close #buffer
' On efface les données de la page d'export
34    Worksheets("Export CSV").Activate
35    Cells.Select
36    Selection.Clear
' On active l'onglet "General"
37    Worksheets("General").Activate
' On signale que tout s'est déroulé sans problème
38    MsgBox "Fichier d'export créé pour l'équipe " & teamSelected & " " & i, vbOKOnly, "Export done"
39 End Sub

Private Sub MiseEnPageAvantExport()
40    MsgBox "Mise en page inconnue"
End Sub

1) Option Explicit : si ce n'est fait, paramétrez votre éditeur VB pour rendre la déclaration des variables obligatoire.
2) Votre 1ère déclaration de variable est incorrecte. Lorsque vous écrivez "Dim TeamSelected, S, SheetTeamSelected as String, seule la variable SheetTeamSelected sera une string. Les 2 autres ne sont même pas des variantes, elles sont inconnues. Si vous voulez vérifier, entrez en ligne 2 "Msgbox VarType(S) : Msgbox VarType(SheetTeamSelected : End), vous obtiendrez 0 pour l'une (=inconnue) et 8 (=string) pour l'autre.
3) Ligne 6 : plutôt que de demander à l'utilisateur de faire attention aux majuscules, utilisez plutôt la fonction Ucase() qui mettra la saisie en majuscules. C'est de l'ergonomie (mèf. avec les accents).
4) Votre façon d'activer l'équipe choisie est mauvaise bien que correcte sur le plan de la syntaxe (pas d'erreur) : lorsque vous écrivez "if Instr(1, TeamSelected bla...bla...bla..", la selection de l'équipe U14*GOLD pointera sur l'onglet "D" à cause de la lettre "D" et non pas sur l'équipe U14*GOLD. En revanche vous n'aurez pas d'erreur sur l'onglet U16*SILVER (c'est traitre, non ?). Revoyez la fonction Instr().
5) Ligne 7 : le mieux pour éviter toute erreur de saisie est de comparer le contenu de la saisie avec la liste réelle des onglets du classeur, comme je l'ai proposé ici.
6) Le nom des onglets de doit pas comporter de caractères spéciaux. J'ai du remplacer par des espaces les caractères "*" et "_".
7) Ligne 18 : là réside la source de votre erreur : vous avez oublié d'affecter le nom de la feuille sélectionnée à la feuille SheetTeamSelected.
8) Ligne 24 : pourquoi ce 99 alors qu'on connaît le nombre de lignes du tableau (Dernligne) ?
9) Ligne 30 : vous avez écrit #1 parce que votre programme est simple. Mais lorsque vous devrez manipuler un grand nombre de fichier en lecture/écriture, vous risquez de vous y perdre. Prenez l'habitude d'utiliser la fonction FreeFile() pour connaître le n° du 1er buffer disponible (de 1 à 511).
10) Enfin ne connaissant rien de votre mise en page, j'ai juste mis une alerte à la place.

Rechercher des sujets similaires à "export calendrier csv"