Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Développement mobile : les grands principes ergonomiques

ui1

Revenons aux bases du développement mobile le temps d’un article…

La mobilité a pour principal objectif d’optimiser la saisie et la fiabilité des informations collectées sur le terrain.

Une application mobile industrielle est destinée à être utilisée par des techniciens nomades. Ces techniciens se voient contraints d’abandonner le stylo et le papier, pour privilégier l’utilisation d’un terminal mobile pour la réalisation de leurs travaux.

Ce nouvel outil a pour but d’améliorer la saisie des informations et plus particulièrement la productivité. Il ne doit donc pas être une contrainte ou un obstacle en ce qui concerne la réalisation de leurs taches.

Si l’utilisation d’une application mobile est trop contraignante pour un technicien, sa productivité sera en baisse et un sentiment de frustration et de découragement s’installera.

Pour que l’utilisation du terminal mobile soit la plus simple possible, il est important de bien concevoir l’interface graphique de l’application métier.

Afin de ne pas rebuter les techniciens face à la technologie, et ne pas leur faire regretter leurs anciens modes de travail (papier + stylo), il est primordial de construire une application simple, intuitive et ergonomique.

Il est à noter que l’ergonomie de l’application métier doit également être adaptée aux conditions spéciales et à l’environnement de travail du technicien (travail en extérieur, soleil, obscurité, besoin d’un maximum de rapidité de saisie, etc…).

Dans cet article, j’ai donc réuni l’ensemble des plus grands principes ergonomiques qui doivent être employés (selon moi) afin de construire une application nomade adéquate répondant à tous ces besoins. L’implémentation de toutes ces préconisations permettra un gain de productivité et améliorera les taches de l’utilisateur.

 

Design, Couleurs et Textes :

- En ce qui concerne la charte graphique de l’application, optez pour des textes de couleur foncée sur des fonds (backgrounds) de couleur claire. En effet, cette combinaison permet de faciliter la lecture des textes, et donc d’optimiser le travail du technicien. Mettre des textes foncés sur des fonds clairs est également la combinaison la mieux appropriée pour une utilisation du terminal en milieu extérieur. En effet, elle assurera une meilleure visibilité lorsque l’écran du PDA sera exposé en plein soleil par exemple.

- Un “code couleurs” peut également être instauré et permettra à l’utilisateur de bénéficier d’un confort optimal, et d’une grande praticité en ce qui concerne l’utilisation de l’application nomade. Par exemple, sur chacun des écrans, il est possible de définir une zone de couleur (panel au fond clair) qui représentera systématiquement les informations du référentiel de travail, tandis qu’une autre zone, de couleur différente, sera utilisée pour regrouper les actions possibles de l’utilisateurs (boutons, menus, etc…).

- En ce qui concerne les textes, il est d’abord question de les limiter. En effet, dans le cadre du travail d’un technicien, il est inutile que les écrans soient pollués par une tonne de textes explicatifs. Si l’application est intuitive, et comme on part du principe que le technicien connait bien son métier, il n’est pas utile de disposer de nombreux textes qui en plus prennent de la place sur les écrans. Seul un titre d’écran et quelques libellés simples seront par exemple suffisants.

- Les libellés doivent être simples, concis et bien adaptés. Ils doivent être écrits dans une police suffisamment grande pour en faciliter la lecture.

- L’utilisation de logos ou pictogrammes peut également être un atout. L’utilisation d’images, plutôt que de textes, est plus attrayant et parfois plus parlant pour l’utilisateur.

a1            a2

 

Navigation dans l’application :

- La navigation au sein de l’application mobile doit être conviviale et intuitive. Il faut que l’application soit simple en termes d’utilisation, et que la prise en main soit facile pour des techniciens qui n’ont peut être pas l’habitude d’utiliser ce genre d’appareil. Tous les écrans et les actions associées doivent être suffisamment prédictibles pour qu’aucune formation particulière ne soit nécessaire quant à l’utilisation du logiciel.

- En terme d’intuitivité, il est aussi intéressant de regrouper intelligemment les contrôles graphiques par zones et d’uniformiser l’ergonomie générale de l’interface graphique. L’utilisateur ne doit pas avoir de doutes et doit pouvoir effectuer ses actions facilement sans chercher un bouton particulier, ou une fonctionnalité, pendant plusieurs minutes. Cette idée rejoint l’utilisation de codes couleurs.

- Pour faciliter davantage la navigation et pour ne pas que l’utilisateur soit “perdu” dans les différents écrans de l’application, il peut être intéressant de titrer chacun des écrans. Par exemple, nous pouvons placer sur chacun des écrans une barre de titre personnalisée permettant à l’utilisateur de comprendre rapidement la fonctionnalité principale d’un écran spécifique.

- Très important : il faut toujours garder en tête que l’utilisation du stylet sur l’écran tactile peut se révéler pénible est fastidieux. En effet, le fait de détacher et d’utiliser le stylet du PDA est peu pratique pour le technicien nomade. De plus, le stylet est un petit objet qui peut facilement se perdre ou se casser. Aussi, il est intéressant de concevoir l'interface graphique d’une application mobile industrielle pour qu’elle soit utilisable avec les doigts. Cette conception aura pour but d’améliorer considérablement la navigation entre les écrans mais également les différentes actions, et la saisie d’informations. Dans la mesure du possible, il ne faut donc pas hésiter à grossir la taille des contrôles graphiques, afin de proposer une plus large zone qui sera “cliquable” avec les doigts. En ce qui concerne les scrollings, ils doivent pouvoir s’effectuer sans stylet, via des gros boutons “Up” et “Down” par exemple. (Il en est de même pour simplifier la sélection dans une comboBox par exemple). Nous parlons ici d’ergonomie “gros doigts” où le but est d’adapter le plus possible une interface graphique pour son utilisation sans stylet. L’utilisation du stylet, ou toute sorte d’interaction tactile plus précise, pourra tout de même être accepté sur les écrans rarement utilisés, comme les écrans d’historiques par exemple.

- Afin d’optimiser au mieux la navigation dans l’application, et plus particulièrement sa rapidité, il peut se révéler intéressant de proposer à l’utilisateur des raccourcis claviers (pour les terminaux disposants de claviers hardware évidemment). Certaines actions associées à l’interface graphique peuvent être effectuées en appuyant simplement sur une touche particulière du clavier. A vous de programmer intelligemment ces raccourcis clavier pour rendre l’utilisation de l’application encore plus facile et plus pratique.

- Enfin, il est pratique pour l’utilisateur de regrouper l’accès aux fonctionnalités phares de l’application dans un unique menu principal, sur lequel l’utilisateur peut revenir rapidement. (Bouton retour au menu, raccourci clavier, etc…).

b1           b2 

 

Inputs utilisateurs / Saisie d’informations :

- Certains terminaux ne sont pas munis d’un clavier hardware, et le technicien peut parfois avoir besoin de saisir une information dans un champ de texte de l’application… Certes, il existe le clavier virtuel par défaut “Windows Mobile” qui peut être utilisé pour saisir du texte, cependant son utilisation doit s’effectuer à l’aide du stylet et peut donc devenir pénible. Aussi, il peut être intéressant d’implémenter un clavier virtuel personnalisé, et surtout “gros doigts”, que l’on affichera dans des cas précis de saisie.

- D’une manière générale, les saisies au clavier ne sont pas rapides et peuvent vite devenir contraignantes. Dans la mesure du possible, il faut mieux éviter l’utilisation de champs de textes pour privilégier l’utilisation de listes ou de menus déroulants. Ces listes peuvent contenir des textes et des informations prédéfinies ou récupérées à partir de la base de données par exemple. Elles permettront à l’utilisateur de sélectionner rapidement une information et d’éviter la saisie au clavier. Bien sûr, dans certains cas, la saisie d’informations au clavier est inévitable. 

- Enfin, pour faciliter d’avantage la saisie d’informations, il est possible de gérer intelligemment le focus sur certains contrôles. Par exemple, imaginons que suite à un clic sur un bouton, nous affichons un écran comportant une simple textBox dans laquelle l’utilisateur doit entrer une référence. Dans ce cas précis, il est habile de donner le focus à la textBox dès l’affichage de l’écran via le code .NET. Cette action permettra à l’utilisateur de pouvoir tout de suite effectuer sa saisie via un clavier sans avoir besoin de cliquer sur l’écran pour mettre le focus. Il s’agit là d’un détail mais ce sont des détails comme ça qui peuvent beaucoup améliorer l’utilisation d’une application.

c1            c2

 

Indicateurs / Alertes / Feedback utilisateurs :

- Lorsque l’utilisateur entreprend une action particulière dans son application, il est impératif de lui fournir un retour, un feedback. L’action a-t-elle réussie? échouée? Que s’est-il passé? La sauvegarde s’est-elle correctement déroulée? Tant de questions qu’un utilisateur peut se poser pendant l’utilisation de son outil… Aussi, il est donc important, de faire apparaitre des alertes sous la forme de “message box” par exemple, pour informer au mieux l’utilisateur de la réussite ou de l’échec de son opération. Ces messages doivent être simples, concis, et peu nombreux pour ne pas devenir contraignants.

- En plus d’alertes visuelles, ne pas hésiter à utiliser des alertes sonores qui peuvent être un atout supplémentaire pour le technicien qui ne regarde pas forcément son écran lors de manipulations particulières telles que la lecture de codes à barres par exemple.

- Plus particulièrement à la mobilité, il est toujours intéressant pour l’utilisateur d’avoir accès rapidement à des indicateurs tels que le niveau de batterie du terminal, le niveau du signal GPRS, ou encore la date et l’heure. Pour les applications “plein écran”, il peut être nécessaire d’afficher sur tous les écrans une barre d’informations personnalisée permettant de contrôler ces différents éléments.

- Pour terminer, il est important de signaler que les terminaux mobiles n’ont pas les performances qu’un PC de bureau pourrait avoir. Aussi, il est indispensable d’afficher systématiquement un sablier pendant l’exécution de traitements complexes. Ce sablier permet de faire comprendre à l’utilisateur qu’il a bien validé une action spécifique et qu’il doit attendre plusieurs secondes que le traitement s’achève. Bien sûr, ce sablier peut être remplacé par un message du style “Merci de patienter…”.

d1             d2

 

Conclusion :

En conclusion, concevoir une interface graphique pour une application mobile est un travail très complexe et qui doit énormément être étudié par rapport aux besoins et aux conditions de travail de l’utilisateur. L’ergonomie d’une application nomade ne doit pas être faite au hasard et doit bénéficier d’une attention particulière pour faciliter au mieux le travail des utilisateurs.

N’hésitez pas à me faire part de vos commentaires et remarques.

Je suis à votre disposition si vous avez la moindre question ou besoin d’un conseil.

Pi-R.

Spécificités de la réplication SQL dans le cadre de projets mobiles

Dans cet article, je vous présente les spécificités de la réplication de fusion SQL dans le cadre de projets mobiles (SQL Server Compact).

S’en suivront d’autres articles plus techniques qui représenteront les points importants et délicats sur la mise en place d’un système de synchronisation entre des terminaux mobiles et un serveur SQL.

 

Présentation de la réplication de fusion :

La réplication de fusion (merge replication) est un système puissant et riche en fonctionnalités qui permet la synchronisation de données, et plus particulièrement la synchronisation d’un différentiel de données vers les différents terminaux du parc.

La réplication SQL permet les échanges de données entre une base centrale SQL Server et plusieurs bases SQL Server Compact déployées sur des terminaux mobiles.

Lors du processus de réplication, seules les données modifiées (par des ordres UPDATE, INSERT, ou DELETE) sont prises en compte. Le système peut déterminer de manière intelligente quelles sont les données modifiées et quelles sont les données qui doivent être envoyées sur chacun des terminaux.

Il existe plusieurs types de réplication dans SQL Server, cependant seule la réplication de fusion est prise en charge et permet de synchroniser des données entre un serveur et des terminaux portables. Pour la mobilité, nous parlons de « web synchro » dans le sens où les PDA doivent s’appuyer sur une DLL exposée sur un serveur web IIS pour échanger leurs données (= Agent de réplication). L’URL de cette DLL sera donc précisée dans le code de l’application mobile.

 

Grands principes de la réplication de fusion :

Publisher, Distributor et Subscriber :

La notion de réplication SQL passe obligatoirement par les notions de Publisher, Distributor et Subscriber.

image

Il s’agit en fait de 3 parties distinctes ayant chacune un rôle précis dans les process de synchronisations. Ces 3 parties correspondent d’ailleurs à 3 bases de données différentes.

Le Publisher correspond à la base publiée, c’est à dire celle qui contient les données à répliquer. Le Distributor correspond à la base qui distribue les données (base système), tandis que le Subscriber (ou abonné) correspond à la base répliquée, c’est à dire celle qui reçoit les données répliquées.

Les snapshots :

Les snapshots sont des métadonnées utilisées lors des synchronisations entre un PDA et le serveur SQL.

Ils doivent être stockés dans un répertoire réseau de telle manière à être accessibles à la fois par le serveur IIS et l’agent de snapshots situé sur le serveur SQL.

Les snapshots permettent de définir le schéma de la base à un instant t, ainsi que l’ensemble des contraintes liées.

Il existe 2 types de snapshots:

  • Le snapshot principal qui doit être généré obligatoirement suite à la mise en place d’une publication.
  • Un snapshot particulier par terminal (système de partitions)

Les synchronisations de données entre le PDA et le serveur SQL se basent sur ces snapshots.

Déroulement de la synchronisation initiale :

image La synchronisation initiale se déroule de la manière suivante :

  • Le Distributor utilise le répertoire de snapshots pour préparer le schéma de la base répliquée.
  • Le schéma de la base mobile est créé.
  • Les contraintes sont créées sur la base mobile.
  • Les données sont téléchargées.

Déroulement des synchronisations suivantes :

image

Lors des synchronisations suivantes, le distributor n’utilise plus les snapshots. Seul le différentiel des données est téléchargé.

Publications :

Une publication est rattachée à une et une seule base publisher.

La publication permet de définir l’ensemble des éléments suivants :

  • Articles : Ce sont les tables et les colonnes répliquées
  • Filtres : La publication peut se baser sur un système de filtres pour restreindre le nombre de données sur chacun des abonnés
  • Options: De nombreuses options peuvent être liées à une publication particulière et permettent de définir le comportement des synchronisations.

Plusieurs publications peuvent être rattachées à une même base.

En effet, nous pouvons par exemple distinguer les tables du référentiel de travail de celles qui correspondent aux tables qui vont stocker les données collectées sur le terrain par les différents terminaux.

Dans ce cas, il est astucieux d’implémenter 2 publications différentes. La première permettra de répliquer les tables du référentiel de travail (tables dont les données doivent uniquement descendre sur les PDA), tandis que l’autre publication va être utilisée pour la remontée des terrains terrain. Ces 2 publications implémentées ne possèderont pas les mêmes options, et seront configurées selon le sens des flux (descendant ou remontant).

Le fait de séparer les tables du référentiel de celles des données terrain en 2 publications différentes permet également d’éviter les conflits.

 

Exemple concret de mise en pratique dans le cadre d’un projet mobile :

Imaginons que nous devons mettre en place un système de synchronisation pour des techniciens nomades qui effectuent des interventions de maintenance chez des clients (plomberie, électricité, etc...).

Ces techniciens possèdent chacun un terminal portable sur lequel est installé une application mobile.

L’application mobile, développée sous Windows Mobile, doit permettre aux techniciens de synchroniser leurs données lorsqu’ils le souhaitent en cliquant sur un simple bouton « Synchro ». Dès lors, les techniciens doivent pouvoir recevoir les demandes d’interventions qu’ils doivent accomplir chez les clients, et peuvent également envoyer les rapports des interventions qu’ils ont réalisées via le logiciel mobile.

Cet exemple représente un cas typique d’utilisation de la réplication SQL et de l’ensemble de ses fonctionnalités !

Ainsi, des bases de données locales, une par terminal, seront destinées à stocker le référentiel de travail ainsi que les rapports des techniciens. Ces bases de données contenues sur les PDA représentent donc les abonnés de la réplication de fusion. Elles pourront échanger leurs données avec le serveur SQL lors d’un clic sur le bouton de synchronisation.

Grâce à la réplication SQL, et plus particulièrement à la construction d’un système de filtres, nous pouvons aussi faire en sorte qu’un technicien possède dans sa base de données locale uniquement le référentiel de travail qui lui est propre.

Ainsi la base de données d’un technicien T ne pourra contenir que les demandes d’interventions qui sont planifiées pour ce technicien (Il en est de même pour l’ensemble du référentiel, c'est-à-dire les clients, le périmètre géographique, etc.…).

Les filtres jouent un rôle important dans la réplication dans le sens où ils permettent de filtrer l’ensemble des données qui descendent sur les terminaux mobiles.

En effet, tous les terminaux ne devront pas forcément posséder les mêmes données dans leurs bases locales.

Dans certains projets mobiles l’implémentation de filtres peut avoir un rôle important pour la sécurité des données. Les filtres peuvent être parfois un bon moyen de restreindre la visibilité des données protégées par des droits.

Exemple de process :

  1. La secrétaire reçoit les appels téléphoniques et saisit les demandes d’interventions des clients via une application PC.
  2. Les informations relatives aux demandes et aux clients sont alors stockées dans la base centrale.
  3. Les agents terrain cliquent sur le bouton « Synchro » pour synchroniser leurs terminaux mobiles.
  4. Chaque technicien reçoit alors les demandes d’interventions qu’il doit réaliser.
  5. Les techniciens réalisent donc les interventions et rédigent leurs rapports dans l’application mobile.
  6. Ils synchronisent de nouveau leurs terminaux pour que les rapports d’interventions remontent dans la base serveur. (De la même façon, ils reçoivent encore les éventuelles nouvelles demandes).
  7. Une fois les rapports remontés dans la base centrale, la secrétaire peut les traiter et envoyer les factures aux différents clients.

image 

Pré-requis :

Voici la liste de tous les éléments nécessaires pour implémenter convenablement la réplication SQL dans le cadre de projets mobiles :

Environnement de développement - .NET Framework 2.0 (ou versions ultérieures)
- Visual Studio 2005 (ou  versions ultérieures)
- ActiveSync 4.x ou Windows Mobile Device Center (pour Vista et 7)
Serveur SQL - SQL Server 2005 ou 2008
- Composants de réplication SQL Server 2005 ou 2008
- Outils de réplication SQL Server Compact
Serveur IIS - IIS 5.x (ou versions ultérieures) installé sur même serveur ou sur un serveur différent
- Pour IIS 7.0, il est nécessaire d’installer les composants de compatibilité IIS 6.0

Pour pouvoir construire un système de réplication entre des terminaux mobiles (SQL Server Compact) et une base centrale (SQL Server), il est nécessaire d’installer les outils de réplication SQL Server Compact.

Téléchargement des “Microsoft SQL Server Compact 3.5 Server Tools” :

http://www.microsoft.com/downloads/details.aspx?FamilyID=b18327f3-96e1-415d-b037-9e0c46d49956&DisplayLang=en

 

Installation et déploiement sur un terminal mobile :

Pour que la réplication SQL soit prise en charge par un terminal, il est question d’installer certains composants sur le PDA. Les fichiers d’installation CAB se situent par défaut dans le répertoire “%ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5\Devices\plateforme\processeur\” :

  • sqlce.type_appareil.plateforme.processeur.CAB
  • sqlce.dev.langue.type_appareil.plateforme.processeur.CAB
  • sqlce.repl.type_appareil.plateforme.processeur.CAB

Ces composants dépendent du type d’appareil, de plateforme et également du processeur de l’appareil.

A noter que les bons fichiers CAB sont poussés et installés automatiquement par Visual Studio lors du lancement d’une phase de déploiement.

 

Règles de bases pour la réplication avec SQL Server Compact :

Voici quelques règles importantes à connaitre en ce qui concerne la mise en place de la réplication entre des terminaux mobiles et un serveur SQL :

  • Les terminaux mobiles peuvent uniquement être des Subscribers (jamais des Publishers, ni des Distributors).
  • Il existe plusieurs Subscribers (= terminaux portables) pour un même publisher.
  • Un subscriber doit toujours se synchroniser avec le même Publisher, mais plusieurs publications peuvent être utilisées.
  • C’est toujours aux Subscribers que revient la tache d’initialiser une synchronisation avec le serveur.

Restrictions des modifications de schéma sur un subscriber :

Certaines modifications de schéma sur l’abonné sont interdites et peuvent générer des échecs de synchronisation. Voici la liste complète des actions à ne pas entreprendre sur la base de données abonnée :

  • Supprimer ou renommer une table
  • Ajouter ou supprimer une colonne dans une table
  • Ajouter ou supprimer une clef primaire ou une clef étrangère

Eléments non pris en charge par SQL Server Compact :

Les éléments ci-dessous ne sont pas pris en charge par SQL Server Compact :

  • Procédures stockées
  • Propriétés étendues
  • Vues
  • Contraintes CHECK
  • Fonctions utilisateurs
  • Triggers

Limites de volumétrie des bases mobiles :

Il est à noter que les bases SQL Compact 3.5 ne peuvent pas excéder la taille de 4Go.

Pi-R.

Windows Phone 7 : Navigation inter-pages avec la propriete Page.NavigationService

La propriété NavigationService de la classe PhoneApplicationPage (héritée de Page) nous permet de gérer facilement la navigation inter-pages dans les applications Windows Phone 7.

 

Navigation vers une page précise :

La méthode Navigate de la classe NavigationService permet de naviguer vers une page précise de l’application. Il suffit pour cela de lui passer une URI en guise de paramètre :

 

private void btnChangePage_Click(object sender, RoutedEventArgs e)

    this.NavigationService.Navigate(new Uri(“/OtherPage.xaml”, UriKind.Relative));  
}

 

L’énumération UriKind permet de préciser si le chemin précisé est un chemin relatif ou absolu.

Dans l’exemple ci-dessus, le clic sur le bouton “Change page” entraine l’affichage de la page “Other page” précisée dans l’URI.

image

Navigation dans l’historique des pages :

NavigationService enregistre la navigation sous forme d'entrées dans un historique de navigation. Il est tout à fait possible de naviguer facilement dans l’historique des pages visitées en utilisant les méthodes GoBack et GoForward.

La méthode GoBack permet de revenir sur la page précédemment visitée (même effet que le bouton “Previous” des navigateurs web) :

 

private void btnPrevious_Click(object sender, RoutedEventArgs e)

    this.NavigationService.GoBack();  
}

 

La méthode GoForward, quant à elle, permet d’atteindre de nouveau une page visitée suite à un retour en arrière dans l’historique (même effet que le bouton “Next” des navigateurs web) :

 

private void btnNext_Click(object sender, RoutedEventArgs e)

    this.NavigationService.GoForward();  
}

 

Les propriétés CanGoBack et CanGoForward de la classe NavigationService permettent de préciser si le retour en arrière et le retour en avant dans l’historique de navigation sont possibles.

 

Gestion du bouton “Back” :

L’action du bouton “Back” du Windows Phone est pris en charge par le système. Il permet de revenir automatiquement en arrière dans l’historique des pages visitées (= GoBack). Cependant, nous pouvons capturer l’évènement BackKeyPress d’une page pour spécifier un traitement spécifique lorsque l’utilisateur appuiera sur le bouton “Back” :

public Page1()
{

    InitializeComponent();  
    this.BackKeyPress += new EventHandlerCancelEventArgs>(Page1_BackKeyPress);  
}

void Page1_BackKeyPress(object sender, System.ComponentModel.CancelEventArgs e)

    e.Cancel = true; 
}

Pi-R.

Ouverture du blog de Pi-R

Bienvenue sur le blog de Pi-R !

Il s’agit d’un tout nouveau blog orienté développement d’applications mobiles sous Windows Mobile.

Il traitera de différents sujets : .NET Compact Framework, Silverlight sous Windows Phone, Synchronisations de données, Actualités de l’univers de la mobilité…

Très prochainement, de nombreux articles et tutoriels seront postés…

A très bientôt,

Pi-R.

PS : Merci à Tonio pour ses bons conseils sur les pratiques de publication.

pda

Plus de Messages « Page précédente


Les 10 derniers blogs postés

- VMMap en mode instrumentation sur système 64bit : attention à la plateforme cible du build .NET par CoqBlog le il y a 4 heures et 32 minutes

- Etendre le Team Web Access de TFS 2012 – Step 0 par Philippe Didiergeorges Aka Philess le 05-23-2013, 23:48

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le 05-22-2013, 12:52

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29