Erreur exécution 9 - VBA

Bonjour
Petit à petit l oiseau fait son nid !!!
Comment faire pour que les informations de ma DESCRIPTION (REMARQUE) se trouve tous dans la description une fois que le fichier ICS est importé dans l’Agenda ?
2 solutions :
Soit toutes les remarques dans la même cellule
Soit rajouter une boucle en amont pour récupérer toutes les remarques pour alimenter la variable « DESCRIPTION » avant le traitement global

Je cherche le moyen de pouvoir exporter toutes le dates se trouvant dans mon fichier excel ou aussi que les dates selon un filtre mensuel.

Là aussi une boucle traitant ligne par ligne avec le traitement intégral pour chaque ligne et sa création d un fichier ics
Autant de ficher ics que de ligne qu il faudra tous importer

Si cela te convient il me faudrait un fichier en correspondance pour la réalisation de ces dispositions

Hello,

Pour la partie remarque, depuis mon formulaire d’insertion des données, j’ai fait que certains paramètres se retrouvent directement dans la partie de mes remarques.
J’ai pensé qu’en faisant cela, ça m’évite des lignes supplémentaire dans le script d’exportation du fichier en .ICS. Ce qui me faisait ma ligne de code suivante :

.WriteText « DESCRIPTION: » & REMARQUE & vbCrLf

Boucle
Merci des conseils, mais je vais d’abord faire seul la procédure et si vraiment ça ne va pas, je te mettrai le fichier pour ton aide.

Selon les aides que j’ai pu avoir depuis ce site, les boucles se font avec ces paramètres de départ ?

i = 2
ligne = 2
Do While i <Sheets(« iCal »).Range(« A65535 »).End(xlUp).Row +2

Ici mettre ce qu j’ai mis entre mes With f et en with ?

i = i + 1
ligne = ligne + 1

Salut

Dans la boucle il faut effectivement mettre les With et End With mais aussi la définition de toutes tes variables qui précèdent car en fonction de la ligne traitée elles évoluent
Donc mettre ainsi :
i = 2
Do While i <Sheets(« iCal »).Range(« A65535 »).End(xlUp).Row +2
ligne = i
Range(« A » & ligne).Select
Dt = ActiveCell.Offset(0, 1).Value 'Date du RDV. (Split et « / ») sert ? s?parer les valeurs
LPEC = ActiveCell.Offset(0, 7).Value 'Lieu PEC
HPEC = ActiveCell.Offset(0, 8).Value 'Heure PEC
CIV = ActiveCell.Offset(0, 11).Value 'Civilit?
NP = ActiveCell.Offset(0, 12).Value 'Nom et pr?nom
'Note = ActiveCell.Offset(0, 19).Value 'Note ou remarque avec autre informations utiles
Titre = ActiveCell.Offset(0, 7).Value 'Title ou Summary est un petit r?sum? du rdv
fichier = ThisWorkbook.Path & "" & « calendrier.ics » 'Le chemin d’enregistrement et le nom ? donner
'DTSTART = Month(Dt) & Day(Dt) & Year(Dt) & « T » & Hour(HPEC) & Minute(HPEC) & « 00 » 'Date et heure de d?but du PEC
DTSTART = Format(Dt, « yyyy ») & Format(Dt, « mm ») & Format(Dt, « dd ») & « T » & Format(HPEC, « hh ») & Mid(Format(HPEC, « hhmm »), 3) & « 00 »
'DTEND = Month(Dt) & Day(Dt) & Year(Dt) & « T » & Hour(HPEC) & Minute(HPEC) & « 00 » 'Date et heure du transprot (prendre en compte l’heure du RDV)
DTEND = Format(Dt, « yyyy ») & Format(Dt, « mm ») & Format(Dt, « dd ») & « T » & Format(HPEC, « hh ») & Mid(Format(HPEC, « hhmm »), 3) & « 00 »
Set f = CreateObject(« ADODB.Stream ») 'Le flux d’enregistrement des donn?es
With f
.Charset = « utf-8 » 'Permet de prendre les caract?res comme les « ?,?, etc. »
.Open 'Ouverture du flux
.WriteText « BEGIN:VCALENDAR » & vbCrLf 'D?but de la structure. (vbCrlf) est une fonctione de retour ? la ligne
.WriteText « VERSION:2.0 » & vbCrLf 'La version
.WriteText « PRODID:-//PARVESH.C//FR » & vbCrLf 'Par quel logiciel ou personne ?a ?t? cr??
.WriteText « BEGIN:VEVENT » & vbCrLf 'D?but des ?v?nements
'.WriteText « DTSTART » & DTSTART & vbCrLf ‹ Date de l ›?v?nement
.WriteText « DTSTART;VALUE=DATE: » & DTSTART & vbCrLf
'.WriteText « DTEND » & DTEND & vbCrLf ‹ Date de fin de l ›?v?nement
.WriteText « DTEND;VALUE=DATE: » & DTEND & vbCrLf
.WriteText « SUMMARY: » & Dt & " " & Titre & vbCrLf ‹ Titre de l ›?v?nement avec ajout de la date
.WriteText « DESCRIPTION: » & Note & vbCrLf 'Information comp?mentaire des remarques ou notes
.WriteText « LOCATION: » & LPEC & vbCrLf 'Lieu, dans ce cas c’est le lieu de PEC
.WriteText « END:VEVENT » & vbCrLf 'Fin des ?v?nements
.WriteText « End:VCALENDAR » 'Fin de la structure
.SaveToFile fichier, 2 'Sauvegarde du fichier
.Close 'Fermeture du flux
End With
i = i + 1
Loop

Voir aussi cette ligne est correcte :
Do While i <Sheets(« iCal »).Range(« A65535 »).End(xlUp).Row +2
Si je prends une colonne dont la dernière donnée est sur la dernière ligne pour qu’elles soit prise en compte comme dernière à traitée je mets si c’est la colonne A :
Do While i <Sheets(« iCal »).Range(« A65535 »).End(xlUp).Row +1
Avec
Do While i <Sheets(« iCal »).Range(« A65535 »).End(xlUp).Row +2
tu traites en dernière ligne la première ligne qui n’a plus donnée en colonne A
A toi de voir si cela a un sens

Fais des essais et dis moi

J’ai finalement intégré dans mon formulaire de saisi le script qui va créer automatiquement le fichier .ICS avec le non du client rentré récemment depuis le formulaire de Saisie.

J’ai laissé l’autre fonction qui permet toujours à l’utilisateur de pouvoir recréer un fichier ICS uniquement depuis le Calendrier pour le client qu’il souhaite, au cas ou il ferait une modification.

Voici le fichier de ce que j’ai pu faire, pour avoir une vue de ce que je dis : Nouveau_système.xlsm (77,3 Ko)

Finalement, je pense que le Do while n’est pas nécessaire, mais je l’ai quand même mis dans la partie du formulaire de Saisie. Est-ce que je devrais l’enlever pour diminuer le poids en espérant que ça ne va pas me créer un bug.

Tu en penses quoi ?

Pour l’autre pb, avoir toutes les infos dans la Description, ne fonctionne toujours pas.
Pour tant dans le scripte je renseigne dans le Formulaire de Saisie met toute les infos dans la cellule REMARQUE:

ActiveCell.Offset(0, 5) = "HEURE RDV : " & txtHeureRDV.Value & vbCrLf & "LIEU RDV : " & txtAdresseRDV.Value & vbCrLf & vbCrLf & cboCivilite.Value & " " & txtNomPrenom.Value & vbCrLf & "Téléphone : " & txtTelFixe.Value & " - " & txtTelMobile.Value & vbCrLf & "Mobilité : " & cboMobilité.Value & vbCrLf & vbCrLf & "Véhicule : " & cboVehicule.Value & vbCrLf & vbCrLf & txtMotifRemarque.Value 'Description

Mais le script du calendrier ne prend rien de plus que la première ligne:

REMARQUE = ActiveCell.Offset(0, 5).Value 'Description, note, remarque et autre information
.WriteText « DESCRIPTION: » & REMARQUE & vbCrLf

Après la résolution du problème précédant, il me reste encore

  • système de modification via un formulaire
  • système de calculation des km avec google maps.

Pour le formulaire de modification des données ce n’est pas un soucis pour moi.

Mais le google maps, c’est plus complexe, j’ai fait des test (pas dans le fichier joint) avec ma clef API et en utilisant la formule « =serviceweb », mais rien ne se passe.

[quote=« Garfield, post:24, topic:6568 »]
ActiveCell.Offset(0, 5) = "HEURE RDV : " & txtHeureRDV.Value & vbCrLf & "LIEU RDV : " & txtAdresseRDV.Value & vbCrLf & vbCrLf & cboCivilite.Value & " " & txtNomPrenom.Value & vbCrLf & "Téléphone : " & txtTelFixe.Value & " - " & txtTelMobile.Value & vbCrLf & "Mobilité : " & cboMobilité.Value & vbCrLf & vbCrLf & "Véhicule : " & cboVehicule.Value & vbCrLf & vbCrLf & txtMotifRemarque.Value 'Description

Je ne comprends trop bien ce que tu fais dans cette ligne de code
Moi j’ai mis en colonne T « MOTIF & REMARQUE » ceci ligne 3/4/5:
MOTIF & REMARQUE

ligne 3 : Test du format .ics1
ligne 4 : Test du format .ics2
ligne 5 : Test du format .ics3

J’ai mis en tout début de procédure ces lignes de code :
Note = «  »
i = 2
Do While i < Range(« T65535 »).End(xlUp).Row + 1
If Range(« T » & i) <> «  » Then
Note = Note & Range(« T » & i) & " "
End If
i = i + 1
Loop

et nickel chrome j’obtiens dans le fichiers ics l’ensembles des remarques de la colonne T :

La seule différence au lieu de les avoir l’un en dessous de l’autre je les ai l’une après l’autre impossible de les mettre autrement

« Finalement, je pense que le Do while n’est pas nécessaire, mais je l’ai quand même mis dans la partie du formulaire de Saisie. Est-ce que je devrais l’enlever pour diminuer le poids en espérant que ça ne va pas me créer un bug. »

Gagner en poids ce sera insignifiant
L’enlever pas de souci mais si tu le fais il faut enlever toutes les lignes qui en découlent (Loop par exemple et i=i+1 etc…) et remplacer la variable de la boucle par une donnée fixe
Fais un essais sur une copie et en fonction tu prends ta décision
Tu te prives par contre de cette option

J’espère que tu touches le bout
Bel effort !!!

ActiveCell.Offset(0, 5) = "HEURE RDV : " & txtHeureRDV.Value & vbCrLf & "LIEU RDV : " & txtAdresseRDV.Value & vbCrLf & vbCrLf & cboCivilite.Value & " " & txtNomPrenom.Value & vbCrLf & "Téléphone : " & txtTelFixe.Value & " - " & txtTelMobile.Value & vbCrLf & "Mobilité : " & cboMobilité.Value & vbCrLf & vbCrLf & "Véhicule : " & cboVehicule.Value & vbCrLf & vbCrLf & txtMotifRemarque.Value 'Description

Je ne comprends trop bien ce que tu fais dans cette ligne de code

Ces lignes servent depuis mon Formulaire de Saisie à rentrer mes diverses informations des champs souhaités dans la colonne « Motif et Remarque » l’un sous l’autres dans mon onglet iCal.

Image du Formulaire de Saisie:

Donc, j’ajoute ces champs là:

  • Heure RDV
  • Adresse RDV (LIEU RDV)
  • Civilité
  • Nom Prénom
  • Téléphone fixe et mobile
  • Mobilité
  • Véhicule
  • Et le champ Remarque du formulaire de saisie à la fin

Ce qui me donne ça dans ma colonne MOTIF REMARQUE de mon onglet iCal:
onglet_ical_motif_remarque

Moi j’ai mis en colonne T « MOTIF & REMARQUE » ceci ligne 3/4/5:
MOTIF & REMARQUE

ligne 3 : Test du format .ics1
ligne 4 : Test du format .ics2
ligne 5 : Test du format .ics3

J’ai mis en tout début de procédure ces lignes de code :
Note = « »
i = 2
Do While i < Range(« T65535 »).End(xlUp).Row + 1
If Range(« T » & i) <> « » Then
Note = Note & Range(« T » & i) & " "
End If
i = i + 1
Loop

Je vais essayer cette solution avec des & vbCrLf & pour les retours à la ligne.

Je te redirai l’avancement.

Pour l’heure une pause s’impose.

Merci beaucoup pour ton soutien et bonne soirée.
A bientôt :grinning:

Attention j’ai essayé avec des retours ligne cela ne fonctionne plus
Le fichier ics ne digère pas les retours lignes visiblement
Cela ne marche que si on mets les données Remarque les unes après les autres séparées d’un blanc par exemple
Testes le tu t’en rendras compte

Coucou,

Après avoir changé d’activité, programmation PHP, j’ai remarqué une une écriture (\n) qui permet un retour à la ligne.

Dans mon cas, j’ai introduit cette écriture pour la partie Description de mon fichier iCal de la manière suivante:

ligne1 = "Heure RDV : " & HRDV2 & « \n » & "Adresse RDV : " & LRDV & « \n » & "Véhicule : " & VOITURE & « \n »

ligne2 = "Client : " & CLIENT & « \n » & "Tél. : " & TELEPHONE & « \N » & "Mobilité : " & MOBILITE & « \n »

ligne3 = "Remarque : " & NOTE

entre le with:
.WriteText « DESCRIPTION: » & ligne1 & ligne2 & ligne3 & vbCrLf

Et voilà ce que ça donne en image:

:rofl:, magnifique n’est-ce pas ?

Bonjour
Tu es formidable
Je connaissais pas cette méthode
Donc pas de vblf mais plutôt \n
Je prends note
Donc une affaire qui tourne grace à ta ténacité
Félicitation
Bonne suite

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.