lundi 28 décembre 2015

​Un petit rappel a tous, a partir du premier janvier, il faut avoir le superbe gilet jaune sous la selle.... enfin sur la moto.

L'absence de gilet vous expose a une contravention de 4ème catégorie à savoir 135€ ...... minoré à 90€ !!!!

Je pense que nos amis de la marré-chaussé auront comme consigne de bien vérifier si nous avons nos équipements de sécurité..... Tout les prétextes sont bon pour pomper du fric et nous faire braire !

http://www.legifrance.gouv.fr/eli/decret/2015/5/7/INTS1423537D/jo

lundi 21 décembre 2015

dimanche 20 décembre 2015

J'ai eu vent d'un article paru dans un journal local dernièrement.

Juste une remarque a ces personnes qui pensent que la solution à la liberté et la paix est dans la laïcité...

NON, elle ne se trouve pas forcément et uniquement dans la laïcité, elle se trouve dans l'acceptation de chacun et certainement pas dans l'imposition violente de la laïcité, car oui, ces personnes qui parlent de fasciste et antisémite sont eux même une bonne représentation de ce que sont les fascistes.... imposant leur manière de penser, par l’agression de la pensée. De surcroît, je ne comprends pas non plus pourquoi cette crèche est une marque d'antisémitisme..... Rien que le fait d'écrire cela me semble être du fascisme car là encore, on fait un lien a une religion..... pour les fervents défenseurs de la laïcité.... je trouve cela incongrue.

Ces personnes, cultivées, autant que le la neige qui devrait tomber en cette saison, devraient prendre un dictionnaire et lire la définition du fascisme..... Je pense que si ces personnes qui se disent libre, seraient libre dans leur honnêteté, devraient admettre être eux même des fascistes.... xénophobe envers eux même....

Toute guerre a été, est et sera paradoxalement et malheureusement lié aux religions, quelle qu'elle soit, et c'est grâce a des personnes comme cela, qui n'accepte que leur manière de voir, que les guerres existes, car pour moi, la laïcité est au même titre que les religions une idéologies, qui sera ni plus ni moins responsable de conflits.

Alors de grâce.... si c'est pour dire des anneries comme vous sortez, taisez vous et apprenez à simplement appliquer ce que vous donnez en leçon, de sois disant acceptation des autres, de tolérance..... Par votre comportement, vous n'êtes pas tolérant.

Pour finir, je ne pense pas que l'identité soit contraire au vivre ensemble...... ce n'est pas incompatible.... suffit de respecter l'identité de chacun. Si je vais en chine, je mange chinois avec des baguettes avec leurs traditions et coutumes...... je n'impose pas les miennes, sinon je reste chez moi.....

Je pense tout simplement que vous ne souhaitez pas vivre avec cette identité Alsacienne, ses traditions et coutumes qui n'ont rien de sectaire ou de fasciste, en fin de compte, je pense que vous n'en avez aucune..... mais libre à vous, c'est le libre arbitre.


Un Wattwillerois fière de son identitée Française, Alsacienne, Wattwilleroise .....

samedi 12 décembre 2015







dimanche 6 décembre 2015

IP Cameras in MJPEG mode

Description
IP Cameras in MJPEG mode
TVideoGrabber supports natively the IP cameras in http Motion JPEG (MJPG) or JPG mode listed on this page, with their specific URL to use.

Starting the IP camera preview or recording

To use an IP camera as video source:
- set VideoSource = vs_IPCamera
- set IPCameraURL = the URL of the IP camera (the URL depends of the manufacturer)
- invoke SetAuthentication (at_IPCamera, ".username..", "..password...") if needed
- then invoke StartPreview() or StartRecording()

E.g.:

VideoGrabber.VideoSource = vs_IPCamera
VideoGrabber.IPCameraURL = "http://192.168.0.25/axis-cgi/mjpg/video.cgi";
VideoGrabber.SetAuthentication (at_IPCamera, "root", "admin");
VideoGrabber.RecordingInNativeFormat = true
VideoGrabber.RecordingMethod = rm_MP4
VideoGrabber.AudioRecording = true
VideoGrabber.StartRecording()


All the TVideoGrabber properties and events related to the video capture devices apply to the IP cameras.

E.g.:

VideoGrabber.VideoSource = vs_IPCamera
VideoGrabber.IPCameraURL = "http://x.x.x.x/axis-cgi/mjpg/video.cgi?camera=&resolution=640x480"
VideoGrabber.StartPreview

Note:
- x.x.x.x must be replaced by the IP or the host name of your IP camera
- if the IP camera does not stream on the default 80 port, you have to specify the port after the IP, e.g. for the port 6015:
http://x.x.x.x:6015/axis-cgi/mjpg/video.cgi?camera=&resolution=640x480

Authentication
If an authentication is required to connect to the IP camera, there are 2 ways to set an username and password required:

- either by invoking SetAuthentication (at_IPCamera, "...username...", "...password..." ) before connecting to the IP camera,

- either through the OnAuthenticationNeeded event that will occur when connecting if SetAuthentication has not been invoked yet.


Frame rate

By default TVideoGrabber tries to stream the IP cameras at their maximal speed.
It uses a default frame rate of 30 fps that is therefore theoretical.

You can limit the frame rate by specifying a lower value to the FrameRate property (e.g. FrameRate = 1 will receive one frame by second).


Connection TimeOut
The connection timeout is set by default to 10000 (10 seconds), and the receive timeout to 5000 (5 seconds).
You can modify them as needed by invoking SetIPCameraSetting.

PTZ control

You can send commands to IP cameras that include PTZ control by invoking SendIPCameraCommand.
E.g.:
SendIPCameraCommand ("http://x.x.x.x/axis-cgi/com/ptz.cgi?move=home")
SendIPCameraCommand ("http://x.x.x.x/axis-cgi/com/ptz.cgi?move=up")
tc...


List of the IP camera URL formats to use, depending of the manufacturer
This list is not exhaustive. If you don't know the URL to use for your IP camera, feel free to contact us at support@datastead.com.
The URLs below must begin by http://ip:port or http://hostname:port

Examples for the axis camera below, with the following URL format: /axis-cgi/mjpg/video.cgi.

1) let's suppose the camera IP is 212.45.2.14, the URL to use is:

e.g. on the default port 80: http://212.45.2.14/axis-cgi/mjpg/video.cgi
e.g. if setup on the port 10120: http://212.45.2.14:10120/axis-cgi/mjpg/video.cgi

2) let's suppose the camera host name is myipcamera.net, the URL to use is:
e.g. on the default port 80: http://myipcamera.net/axis-cgi/mjpg/video.cgi
e.g. if setup on the port 9580: http://myipcamera.net:9580/axis-cgi/mjpg/video.cgi


A-Linking/GetData.cgi

Airlink
/mjpeg.cgi
/cgi/mjpg/mjpeg.cgi
/cgi/jpg/image.cgi

Airlive
/video.mjpg
/mjpg/video.mjpg

Airwave/cgi-bin/pusher.cgi

Arecont/mjpeg?res=full&x0=0&y0=0&x1=100%&y1=100%&quality=12&doublescan=0&fps=1&ver=HTTP/1.1
/image?res=half&x0=0&y0=0&x1=1600&y1=1200&quality=15&doublescan=0


Aviosys/GetData.cgi

Aviosys 9060-I/cgi-bin/Stream?Video?Authorization=

Axis IP camera in MJPEG format/axis-cgi/mjpg/video.cgi
/axis-cgi/mjpg/video.cgi?resolution=352x240 (the resolution specified must be available on the IP camera, look at the camera video settings panel)

Axis (IP video server, several cameras) in MJPEG format/axis-cgi/mjpg/video.cgi?camera=1&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=2&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=3&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=4&resolution=320x240
/axis-cgi/mjpg/video.cgi?camera=quad&resolution=704x576 (4 x 4 layout of the 4 inputs)

Bowya (here)
/video.cgi

Bosch/snap.jpg

Canon (VB-C50, VB-C60, etc...)
/-wvhttp-01-/
/-wvhttp-01-/GetOneShot
/-wvhttp-01-/GetOneShot?frame_count=no_limit
/-wvhttp-01-/GetStillImage

Convision/fullsize.push?camera=1&sleep=15

Digicom/mjpeg.cgi

D-Link (DSC2121)/video/mjpg.cgi

D-Link/video/mjpg.cgi
/video.cgi
/mjpeg.cgi
/cgi-bin/video.jpg
/IMAGE.jpg
/cgi-bin/video.vam
/_gCVimage.jpg

EasyN
/video.cgi
/videostream.cgi
/videostream.cgi?resolution=8
/videostream.cgi?resolution=8&rate=13
/videostream.cgi?user=username&pwd=password

Edimax/jpg/image.jpg
/mjpg/video.mjpg
/snapshot.cgi

Ego PT-200/cgi-bin/sf.cgi

Foscam/videostream.cgi
/snapshot.cgi

Fulicom FC-CR1060/cgi-bin/sf.cgi

Gadspot/Jpeg/CamImg.jpg
/GetData.cgi?Status=0

Goscam
/cgi-bin/Stream?Video?Acc=USER?Pwd=PASSWORD?webcamPWD=RootCookies00000
(replace USER and PASSWORD by their respective values)
Kingnow PT200/cgi-bin/sf.cgi

Hamlethttp://www.hamletcom.com/ProductDetails.aspx?ProductCode_EQ_HNIPC30W
/mjpeg.cgi

Intellinet/jpg/image.jpg
or
/temp/image.jpg
(you may have to enable the direct HTTP image access in the setup of the camera)
Intellinet NCS18/jpg/image.jpg

IP Cam waterproof Infrared IP Camera: http://ipcam.en.ecplaza.net/11.asp/snapshot.cgi

IQeye/now.jpg?snap=spush

JVC (e.g. VN-X35U/235U)
/api/video?encode=jpeg&framerate=15&boundary=on

Linksys/img/snapshot.cgi?size=2
/img/video.mjpeg
/img/mjpeg.cgi
(MJPEG mode activated with SendIPCameraCommand ("/adm/file.cgi?h_videotype=mjpeg&todo=save")

mms://x.x.x.x/img/video.asf
(ASF mode activated with SendIPCameraCommand ("/adm/file.cgi?h_videotype=mpeg4&todo=save")

Linudix/cgi-bin/nph-update_4ch.cgi?ch=1

Lumenera/cgi-bin/nph-video

Marmitek
/cgi/mjpg/mjpeg.cgi

Predefined positions:
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=Position1');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=Position2');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=home');
...
Pan/tilt control:videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=up');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=right');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=down');
videograbber1.SendIPCameraCommand('http://[IPaddress]/cgi/admin/ptctrl.cgi?action=move&Cmd=left');

Mobotix/record/current.jpg
/control/faststream.jpg?stream=full
/faststream.jpg?stream=full&fps=1.0 (1 fps)
/faststream.jpg?stream=full&fps=3.0 (1 fps)
/faststream.jpg?stream=full&fps=0 (max frame rate)

Moxa//cgi-bin/video.jpg

Panasonic/nphMotionJpeg?Resolution=640x480&Quality=Clarity
/cgi-bin/nphContinuousServerPush
/SnapshotJPEG?mode=Refresh
/cgi-bin/camera

Pixord/Getimage.cgi
/Getimage?camera=1&fmt=full (full size)
/Getimage?camera=1&fmt=qsif (half size)
/Getimage?camera=1&fmt=sif (quarter size)

PLANET ICA-108/jpg/image.jpg

Qnap
/cgi/mjpg/mjpeg.cgi

Samsung SNB
/video?submenu=mjpg
/video?submenu=jpg

Sanyo/liveimg.cgi?serverpush=1 (MJPEG mode)/liveimg.cgi (Jpeg mode)
Sharkx
/stream.jpg

Silicon/snapshot.cgi

Skyway Security/GetData.cgi?Status=0
/Jpeg/CamImg.jpg

Sony/image
/image?speed=0
/oneshotimage.jpg

Shenzen Sunsky S-NC-0201: http://www.sun-usb.com/product/details/S-NC-0201.htm/cgi-bin/sf.cgi

Surecom/mjpeg.cgi

Swann IP-3G ConnectCam 1000/cgi/jpg/image.cgi

Topcom
http://www.topcom.net/fiche.asp?p_EQ_wirelessipcam2000
/mjpeg.cgi

Toshiba/__live.jpg?&&&
getstream.cgi?10&10&&&10&0&0&0&0

TP-Link/jpg/image.jpg
/video.mjpg
(the "/video.mjpg" MJPEG streaming is available only after disabling the RTSP streaming and rebooting the camera)
Trendnet: http://trendnet.com/products/products.asp?cat=48/goform/video (e.g. TV-IP201W)/goform/video2 (e.g. TV-IP201W)/cgi/mjpg/mjpg.cgi (e.g. TV-IP410)/GetData.cgi
/image.jpg

Vilar/cgi-bin/sf.cgi

Vivotek/video.mjpg (IP71.., IP 73.., VS71.. cameras. Be sure to enable the MJPG mode in the video settings)
/cgi-bin/video.jpg
/cgi-bin/viewer/video.jpg

Y-Cam/stream.jpg

Zavio
/jpg/image.jpg
L'incontournable moteur de recherche possède de nombreuses fonctions avancées. Méconnues par la plupart des utilisateurs, elles permettent pourtant d'affiner ses recherches pour obtenir des résultats plus pertinents. Suivez le guide.
La plupart des utilisateurs de Google se contentent de saisir un ou deux mots-clés pour trouver un site en fonction d'un thème donné. Pourtant, ce moteur dispose de fonctions avancées qui permettent d'améliorer grandement les résultats de recherche et même d'obtenir directement un cours de bourse ou la météo ! Démonstration.

- Le B.A.ba
1. L'usage des guillemets permet de restreindre la recherche à une chaîne de caractère. Par exemple "Web 2.0"

2. On peut aussi utiliser les opérateurs « + » et « - » pour imposer la présence d'un mot-clé (ou d'une expression) ou au contraire n'afficher que les pages qui ne contiennent pas ce mot-clé ou cette expression. Exemple : "web 2.0" +indexel

- Améliorer ses recherches



3. site:indexel.net "'web 2.0'' L'instruction « site: » permet de limiter la recherche d'information à un site en particulier. L'instruction « source: » fonctionne de la même manière et permet de restreindre la recherche à un site d'information répertorié par Google News.

4. allinurl:indexel web L'instruction « allinurl: » réduit la recherche aux pages web dont l'adresse (url) contient l'ensemble des mots. Google ne cherche pas dans le contenu des pages, mais uniquement dans les URLs des pages.

5. inurl:indexel.net web skype Avec cette instruction, Google recherche toutes les URLs (également celles contenus dans les pages web) contenant les mots-clés indexel.net, web et skype.

6. intitle:"web 2.0" L'instruction « intitle: » restreint la recherche aux pages web dont le titre contient au moins un des mots-clés. L'instruction bénéficie aussi de lavariante « allintitle: » qui fonctionne sur le même principe que « allinurl: » : le moteur ne cherche alors que les pages web dont le titre contient l'ensemble des mots-clés ou l'expression exacte.

7. allintext:indexel.net L'instruction « allintext: » recherche uniquement les mots-clés et expression présents dans le texte d'une page web (pas de recherche dans le titre ou l'URL de la page).

~house En utilisant le symbole « ~ » collé au mot-clé recherché, vous pouvez indiquer à Google de rechercher également les pages contenant un synonyme présumé du mot. Dans notre exemple, Google fournit aussi des résultats contenant le mot-clé « home » qu'il assimile à « house ».

8. site:indexel.net 2004..2006. Vous pouvez approximer une recherche en utilisant une plage de nombres. Par exemple pour trouver tous les articles du site indexel.net qui mentionnent des années comprises entre 2004 et 2006.

En résumé, pour trouver sur Indexel un article dont le titre contient « web 2.0 », il vous suffit de saisir la recherche suivante : site:indexel.net intitle:"web 2.0" . On peut aussi construire des requêtes plus pointues dont seul le début change, par exemple : dadvsi site:liberation.fr -forum -intitle:forums -inurl:imprimer et où il suffit de changer le mot-clé initial pour effectuer une nouvelle recherche. Dans le même esprit, site:indexel.net inurl:rss permet de trouver très facilement un flux RSS pour un site donné.

- Optimiser le référencement de son site

Google propose aussi trois commandes qui permettent de mieux comprendre l'état du référencement de son site, et au besoin, de l'améliorer.

9. related:indexel.net Cette instruction affiche tous les sites et pages web considérées comme similaires à la page d'accueil d'indexel.net. Pour éviter de compter les liens, il suffit de se reporter au nombre de sites indiqué en haut à droite de la page.

10. link:indexel.net La commande « link: » permet de connaître tous les sites / pages web qui contiennent un lien pointant vers le domaine spécifié, ici indexel.net.

11. info:indexel.net L'instruction « info: » permet d'afficher toutes les informations relatives à un site ou une page web : la version en cache de la page d'accueil d'indexel.net, les pages web similaires, les pages dotées d'un lien qui pointe sur l'adresse indexel.net et, enfin, trouver toutes les pages contenant le terme "indexel.net".

- Fonctions avancées diverses

Google propose de nombreuses fonctions originales qui simplifient la vie des internautes.

12. Calculer et convertir des monnaies. Le champ de recherche où l'on saisit habituellement ses mots-clés est aussi une calculatrice et un convertisseur de monnaies. Essayez par exemple ((2*5)+4)^2 et 200dollars en euros.

13. spell:comunication Ce correcteur permet de vérifier l'orthographe d'un mot dans toutes les langues supportées par Google.

14. define:AJAX Cette commande fournit une définition du terme provenant de Wikipedia ainsi qu'un lien vers une autre définition provenant d'un site web, mais aussi les expressions les plus courantes incluant le mot : « ajax amsterdam » dans notre exemple.

15. stocks:MSFT L'instruction « stocks: » permet d'obtenir le cours de bourse d'une action sur Yahoo Finance !

16. maps:paris L'instruction « maps: » permet de trouver toutes les cartes relatives à un lieu, indépendamment du format technique (PDF, JPEG, GIF, etc.) de la carte. Laissée vide, l'instruction affiche les principaux sites qui proposent des cartes en ligne.

17. weather:paris L'instruction « weather: » liste les sites de météo qui proposent une analyse des conditions climatiques pour une ville ou un lieu en particulier. Laissée vide, l'instruction affiche les principaux sites météo indexés par Google.

mercredi 2 décembre 2015


Rammstein

Biographie de Rammstein

Rammstein Est Groupe des Nations Unies de métal en forme 1994a Berlin, Allemagne.
Il Est Alors composé de Till Lindemann (chant), Richard Z. Kruspe et Paul H. Landers (Guitares-chœurs), Oliver "Ollie" Riedel (basse), Christoph "Doom" Schneider (batterie-percussions) et Christian «Flake» Lorenz (clavier).
Leur premier album de 'chagrin' est sorti FR 1995e

1,996  Chagrin d'amour
01.Allez-vous le considerer allumée en flammes?
02.Le Maître
03.Viande blanche
04Ashes to Ashes
05Marin
06Vous Sentez si bon
07Le vieux chagrin
08Epouse-moi
09Heartbreak
10La saison du frai
11Rammstein

1997  [Single]
00eLe modèle
00eCocaïne
1998  vies
00eEngel (English Version)
01.Nostalgie
02.Ange
03.Animal
04Punissez-moi
05Avez-vous (rapide rapide Vous avez)
06Se baisser
07Play With Me
08Piano
09Vieil homme
10Magasins
11Kiss Me (Fellfrosch)
1998  [Single]
00eRoulades
00eStripped
1998  Nostalgie Version US
00eVous détestez
1.999  Live Aus Berlin
00eQu'avez-vous fait avec mon coeur
06Vin Sauvage
2000  Jamais Endisqué
00ePesnya O Trevozhnoy Molodosti
00eTout le monde rit
00eVerre noir
00eSchtiel
00eLa colère ne va pas mourir (feat. Puhdys)
2,001  Mère
01.Brûlé My Heart
02.Liens 2 3 4
03.Soleil
04I Will
05Feuer Frei!
06Mère
07Music Box
08Hermaphrodite
09Rein Raus
10Adios
11Brouillard
12Hallelujah
2,001  I Will [Single]
00eSimetierre
2004  Voyage
01.Voyage, voyage
02.Mein Teil
03.Dalaï Lama
04Keine Lust
05Soudure
06Amérique
07Moscou (feat. Viktoria Fersh)
08Morningstar
09Pierre par Pierre
10Without You
11Amour
2,005  Rosenrot
01.Essence
02.Homme contre l'Homme-
03.Rosenrot
04Territoire
05Où êtes-vous
06Ne pas mourir avant moi (ne pas meurent Avant que je te resumer) (feat. Sharleen Spiteri)
07Démolir
08Aidez-moi à
09Te Quiero Puta!
10Feu et l'Eau
11Une chanson
2,009  L'amour est versez tout le monde
01.Rammlied
02.Te le Brasier de Djé
03.Bonne chasse
04Shark
05******** B
06Printemps à Paris
07Wiener Blut
08Bavarder
09L'amour est versez tout le monde
10Avantage
11Roter Sand
01.Guidez-moi
02.Donaukinder
03.Tenir
05Liese
2011  Made in Germany 1995-2011
Mon pays
Chansons hors album

mardi 1 décembre 2015

Avec Excel, il est possible d’utiliser un formulaire de saisie disponible par défaut. Cependant, il reste quelque peu basique et ne vous permet pas, par exemple, d’utiliser des listes déroulantes.

Nous allons donc, dans ce tutoriel, créer un formulaire de saisie personnalisé avec Excel tant au niveau de la saisie des données que de la présentation.
Pour ce tutoriel, nous utiliserons un fichier Excel que vous retrouverez dans l’Espace membres du blog Votre Assistante.
Utilisation d’un formulaire de saisie Excel de base :
Pour afficher le formulaire, nous avons besoin d’un bouton qui, dans la version 2013, n’apparaît pas par défaut. Pour le faire apparaître, allez dans l’onglet Fichier > Options > Personnaliser le ruban. Dans la partie droite, sélectionnez l’un de vos onglets et cliquez sur le bouton Nouveau groupe, puis, dans la partie gauche, dans le menu déroulant, choisissez Toutes les commandes et recherchezFormulaires…, cliquez sur Ajouter >>.
Si, par la suite, vous souhaitez supprimer ce bouton, il suffira de vous placer sur ce nouveau groupe (à droite) et de cliquer sur << Supprimer. Vous pouvez le renommer si vous le désirez.
Profitez-en pour cocher l’onglet Développeur s’il est décoché (et que vous souhaitez créer un formulaire personnalisé). Cliquez sur Ok.

Ajout bouton formulaire
Désormais, dans l’onglet que vous avez sélectionné pour votre nouveau bouton, vous avez une nouvelle icône :
Bouton formulaire
Pour utiliser le formulaire classique, cliquez dessus. Attention, si vous cliquez dessus mais qu’aucune donnée n’existe dans votre fichier, le formulaire n’apparaîtra pas.
Vous avez tous vos champs qui ont été repris avec leurs données. À droite, vous avez :
  • Le nombre de fiches et votre position ;
  • Nouvelle : vous ajouterez un nouvel enregistrement ;
  • Supprimer : vous supprimerez la fiche en cours ;
  • Restaurer : vous restaurerez les modifications effectuées sur un enregistrement ;
  • Précédente : vous vous déplacerez vers la fiche précédente ;
  • Suivante : vous vous déplacerez vers la fiche suivante ;
  • Critères : vous permettra de faire une recherche. Saisissez votre élément à rechercher dans le champ correspondant et appuyez sur Entrée. Cliquez sur Grille pour rebasculer en mode normal si vous n’avez fait aucune recherche ;
  • Fermer (ou la croix rougefermeture) : vous fermerez le formulaire.

À noter que le bouton créé ne servira que pour le formulaire de base. Si vous créez un formulaire personnalisé et cliquez sur ce bouton, c’est le formulaire de base qui apparaîtra.

Création d’un formulaire de saisie Excel personnalisé :
Pour créer ce formulaire, nous allons utiliser du code VBA. Rendez-vous dans l’onglet Développeur >Visual BasicVisual basic.
Cliquez sur Insertion > UserForm pour obtenir un UserForm vierge :
UserForm vierge
Pour commencer, nous allons insérer des zones de textes, listes déroulantes et boutons. Agrandissez le formulaire en utilisant les poignées situées tout autour.
Si la Boîte à outils n’est pas visible, allez dans le menu Affichage > Boîte à outils.
Dans cette boîte, cliquez sur Zone de liste modifiable Zone de liste modifiableet cliquez sur l’UserForm sur la partie gauche pour créer votre première ComboBox qui sera la liste déroulante du Code client, puis, créez-en une autre pour la Civilité vers la droite.
Cliquez ensuite sur Zone de texteZone de texte et créez-en 7 sous la ComboBox2, ce seront des TextBox.
Pour donner un nom à ces cases, utilisez l’icône Intitulév et placez-en un devant chaque ComboBox et TextBox.
Dans l’ordre, en partant de la première ComboBox vers la septième TextBox, vous devez avoir les libellés suivants :
  • Code client
  • Civilité
  • Prénom
  • Nom
  • Adresse
  • Code Postal
  • Ville
  • Téléphone
  • E-mail
Ces libellés correspondent aux en-têtes de colonnes de notre fichier Excel et ne servent qu’à vous indiquer le nom de la zone.
Enfin, créez 3 boutons au bas de l’UserForm avec l’icône Bouton de commande Bouton de commande. Modifiez chacun de leurs noms soit en cliquant dessus (pas de double-clic sinon vous passerez en mode Code), soit en faisant un clic droit > Propriétés Bouton propriétéset en modifiant le nom à la ligne Caption.
Pour CommandButton1, indiquez Nouveau contact, puis, pour le deuxième, Modifier et, pour le dernier,Quitter. Ne renommez pas les ComboBoxTextBox et CommandButton, dans les Propriétés, à la ligneName, ou alors vous devrez indiquer vos propres noms dans le code VBA pour que cela fonctionne.
Pour renommer UserForm1 qui sera le nom de la boîte de dialogue du formulaire, cliquez sur le formulaire et, à la ligne Caption, des Propriétés, saisissez Saisie des coordonnées clients ou le nom de votre choix.
Pour modifier la couleur de fond du formulaire, cliquez sur la flècheFlèche qui apparaît lorsque vous cliquez sur la ligne BackColor. Cliquez sur l’onglet Palette pour avoir plus de choix et choisissez une couleur. Sélectionnez ensuite les intitulés, modifiez leur couleur d’écriture sur la ligne ForeColor et leur police à la ligne Font en cliquant surMenu suivant et indiquez la même couleur que pour le formulaire à la ligne BackColor pour éviter d’avoir des cadres.
Indiquez la même police aux 3 boutons de commande en les sélectionnant.
Replacez tous les éléments du formulaire si besoin en les déplaçant et en les agrandissant grâce aux poignées. N’oubliez pas d’élargir les TextBox, notamment des champs Adresse et E-mail, sinon il y aura un risque que l’ensemble des données n’apparaisse pas.

Vous pouvez déjà voir le résultat en cliquant sur le formulaire, puis, sur la touche F5. Cependant, comme vous pouvez le constater, rien ne fonctionne puisque rien n’est en lien et nous devons le faire avec du VBA. Retournez en Mode création en fermant le formulaire. Passez en mode VBA en double-cliquant sur le formulaire et remplacez ce qui est saisi par défaut par :
Option Explicit
Dim Ws As Worksheet
‘Pour le formulaire
Private Sub UserForm_Initialize()
Dim J As Long
    Dim I As Integer
    ComboBox2.ColumnCount = 1 ‘Pour la liste déroulante Civilité
    ComboBox2.List() = Array(«  », « M. », « Mme », « Mlle »)
    Set Ws = Sheets(« Clients ») ‘Correspond au nom de votre onglet dans le fichier Excel
    With Me.ComboBox1
        For J = 2 To Ws.Range(« A » & Rows.Count).End(xlUp).Row
            .AddItem Ws.Range(« A » & J)
        Next J
    End With
    For I = 1 To 7
        Me.Controls(« TextBox » & I).Visible = True
    Next I
End Sub
Les textes apparaissant en vert sont des commentaires qui ne sont pas pris en compte dans le code car ils sont précédés d’une apostrophe et ne sont présents qu’à titre informatif.
La ComboBox2 contiendra, dans une liste déroulante, les éléments M.Mme ou Mlle.
Si votre onglet se nomme autrement que Clients, n’oubliez pas de modifier le nom dans le code.

Pour la liste déroulante Code client, saisissez à la suite :
‘Pour la liste déroulante Code client
Private Sub ComboBox1_Change()
    Dim Ligne As Long
    Dim I As Integer
    If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    Ligne = Me.ComboBox1.ListIndex + 2
    ComboBox2 = Ws.Cells(Ligne, « B »)
    For I = 1 To 7
        Me.Controls(« TextBox » & I) = Ws.Cells(Ligne, I + 2)
    Next I
End Sub

Pour le bouton Nouveau contact, saisissez à la suite :
‘Pour le bouton Nouveau contact
Private Sub CommandButton1_Click()
    Dim L As Integer
    If MsgBox(« Confirmez-vous l’insertion de ce nouveau contact ? », vbYesNo, « Demande de confirmation d’ajout ») = vbYes Then
        L = Sheets(« Clients »).Range(« a65536 »).End(xlUp).Row + 1 ‘Pour placer le nouvel enregistrement à la première ligne de tableau non vide
        Range(« A » & L).Value = ComboBox1
        Range(« B » & L).Value = ComboBox2
        Range(« C » & L).Value = TextBox1
        Range(« D » & L).Value = TextBox2
        Range(« E » & L).Value = TextBox3
        Range(« F » & L).Value = TextBox4
        Range(« G » & L).Value = TextBox5
        Range(« H » & L).Value = TextBox6
        Range(« I » & L).Value = TextBox7
    End If
End Sub
La phrase Confirmez-vous l’insertion de ce nouveau contact? indique la question qui sera posée lors du clic sur le bouton Nouveau contact et Demande de confirmation d’ajout au titre de la boîte de dialogue.

Pour le bouton Modifier, saisissez à la suite :
‘Pour le bouton Modifier
Private Sub CommandButton2_Click()
    Dim Ligne As Long
    Dim I As Integer
    If MsgBox(« Confirmez-vous la modification de ce contact ? », vbYesNo, « Demande de confirmation de modification ») = vbYes Then
        If Me.ComboBox1.ListIndex = -1 Then Exit Sub
        Ligne = Me.ComboBox1.ListIndex + 2
        Ws.Cells(Ligne, « B ») = ComboBox2
        For I = 1 To 7
            If Me.Controls(« TextBox » & I).Visible = True Then
                Ws.Cells(Ligne, I + 2) = Me.Controls(« TextBox » & I)
            End If
        Next I
    End If
End Sub
La phrase Confirmez-vous la modification de ce contact ? indique la question qui sera posée lors du clic sur le bouton Modifier et Demande de confirmation de modification au titre de la boîte de dialogue.

Enfin, pour le bouton Quitter, saisissez à la suite :
‘Pour le bouton Quitter
Private Sub CommandButton3_Click()
    Unload Me
End Sub
Attention, si vous avez plus ou moins de 7 TextBox n’oubliez pas de modifier le chiffre 7 aux lignes For I = 1 To 7 dans les parties FormulaireCode client et Bouton modifier et à rajouter une ligne à la suite deRange(« I » & L).Value = TextBox7 dans la partie Nouveau contact.

Désormais, vous pouvez appuyer sur F5 pour tester le formulaire.
Formulaire
Il se peut qu’en utilisant la touche ↹ (tabulation), votre curseur ne se déplace pas comme vous le souhaitiez, notamment si vous ne créez pas vos Contrôles dans l’ordre. Pour remédier à ce problème, cliquez droit sur votre formulaire en Mode création et cliquez sur Ordre de tabulation, également accessible dans le menu Affichage.
Vous n’avez plus qu’à monter et descende les éléments pour les mettre dans l’ordre désiré et à cliquer sur Ok sachant que l’emplacement des Labels n’a pas d’importance :
Ordre de tabulation
Si vous avez besoin de modifier le formulaire, retournez dans Visual BasicVisual basic. Dans l’Explorateur de projet, en cliquant droit sur l’UserForm1, vous pourrez basculer entre Code etAfficher l’objet :
Afficher objet
Pour terminer, nous allons créer une macro pour lancer ce formulaire et nous éviter de devoir retourner dans Visual Basic à chaque fois que nous en aurons besoin. Dans l’onglet Développeur, cliquez sur MacrosBouton macros. Donner un nom à celle-ci comme Lancer_formulaire et cliquez sur Créer. Entre les deux lignes présentes dans Visual Basic, saisissez UserForm1.Show vbModeless. Fermez la fenêtre, recliquez surMacrosBouton macros, choisissez la macro créée, cliquez sur Options et choisissez votre raccourci. Selon la lettre choisie, le raccourci comportera la touche Shift ou non pour ne pas remplacer un raccourci existant :
Options de macros
Cliquez sur Ok, fermez la boîte de dialogue et, pour lancer votre formulaire, vous n’aurez plus qu’à utiliser le raccourci créé.
Enfin, n’oubliez pas d’enregistrer votre fichier dans un format prenant en compte les macros en allant dans le menu Fichier > Enregistrer sous. Choisissez un emplacement et le type Classeur Excel (prenant en charge les macros).
Si vous ne souhaitez pas avoir la notification suivante à l’ouverture du fichier :
Avertissement sécurité
Vous pouvez la désactiver en allant dans le menu Fichier > Options > Centre de gestion de la confidentialité > Paramètres du Centre de gestion de la confidentialité > Paramètres des macros > Activer toutes les macros.
Centre de gestion confidentialité
Cependant, ceci n’est pas recommandé.
Vous avez désormais le choix entre saisir les données de manière classique dans la feuille de calculs, les saisir dans le formulaire de saisie de base ou les saisir dans votre nouveau formulaire personnalisé.
L’article est téléchargeable ici.
EDIT : LE CODE POSANT DES SOUCIS DANS SA RETRANSCRIPTION SUR CET ARTICLE EST DISPONIBLE EN FORMAT .TXT EN TÉLÉCHARGEMENT ICI
Pour plus d’éléments sur la compréhension du code, Lydia a réalisé un très bon article que je vous conseille d’aller lire pour résoudre les soucis éventuels de transcription : ça se passe ici !