Sommaire                                                   Excel

+ M'écrire

Astuces informatiques

PROVERBES DU MONDE.
Africains, Arabes, Allemands, Chinois, Russes, Québequois...

HUMOUR

AUTEURS
Camus,   Nietzsche,   Einstein, Desproges, Wolinski, Lacan, Gracian,  Cioran....

 

Deux choses à comprendre : Tout le reste à apprendre.
1) Un cellule est constituée de trois couches sur lesquelles on peut agir indépendamment : la VALEUR, le FORMAT et la FORMULE            
2) Ce qu'est une référence : les cellules travaillent toutes les unes par rapport aux autres ( en référence relative ou absolue).
http://www.excelabo.net/
http://www.cathyastuce.com/ 
http://www.excel-downloads.com/
http://www.admexcel.com/sommaire.htm (Exer)http://www.astucesinternet.com/modules/smartsection/category.php?categoryid=2  (quelques fonctions)
Excel :

Accroître la lisibilité d'une liste en colorant une ligne sur deux
Afficher une partie d'une cellule

Afficher les fichiers avant de les ouvrir
Afficher les initiales d'un répertoire de noms
Afficher la formule dans la cellule : faire F2
Afficher toutes les formules : Outils, option, affichage, cocher formule

Astuces de base
Combiner deux tableaux dans un troisième
Comparer deux colonnes
Compter le nombre de fois où il y a la donnée X  ou NB.SI
Cnum (ou un chiffre est un chiffre)
CONCATENER
Cryptage
Dates
Extraire données d'un fichier : index et equiv
Fréquence
NBVAL et NB, MAX, MIN

Nombres d'occurrences dans une plage
Nombres de valeurs comprises entre deux bornes
Ne pas afficher les messages d'erreur

Pyramide des âges
RECHERCHEV
Remplacer un point par une virgule
Sélectionner la totalité d'un tableau : Ctrl *
Séparer en deux colonnes une liste
Si
Si erreur
Sous-total
Supprimer des doublons
Supprimer les messages d'erreur
Macro :
Aide-mémoire
Afficher un message avec oui ou non
Boîte
Boîtes msgbox plusieurs réponses
Boucle 1
Boucle 2

Copier-coller, collage spécial
Copier paquets de cellules en lignes en colonnes
Couleurs
Ecriture dans une autre feuille ou un autre classeur
Effacer liens hypertextes
Faire une cellule arrondie
Insertion d'une macro
Insertion de lignes vides jusqu'à la fin du tableau
Insertion dans un tableau d'une ligne vide toutes les deux lignes (ou plus)
ouverture automatique d'une macro
Recopies de ligne jusqu'à la fin du tableau

Rechercher le nombre d'occurence dans une plage
Simplification
Supprimer les lignes vides d'un tableau
 
Pour calculer capacité d'emprunt : http://www.calcamo.org/calcul-de-credit/ 

Pyramide des ages : http://www.excel-exercice.com/index.php?lang=1&var1=4-3-1 

Pour aller d'excel 2003 à excel 2007 : Télécharger le fichier trouvé sur :  http://office.microsoft.com/fr-fr/excel/HA100860481036.aspx#3 

Accroître la lisibilité d'une liste en colorant une ligne sur deux :
Sélectionner le tableau (sauf la ligne d'en-tête). Aller dans format "mise en forme conditionnelle" et dans condition 1, sélectionner "la formule est " Rentrer : =mod(ligne();2) Sélectionner format, puis motif et choisir la couleur.
Astuces de base :
65 536 lignes (2 ^15).  256 colonnes.
ctrl et  flèches de directions pour se déplacer aux quatre coins de la feuille.
ctrl et  * : pour sélectionner le tableau en cours.
Double-cliquer dans une cellule pour voir les formules.
ctrl C : copier           ctrl V : coller
 

Transformer un tableau de francs en euros : sélectionner le taux de l'euro, copier, collage spécial, valeur, division.

La fonction  RECHERCHEV :
On a un tableau de référence et on fait rechercher au tableur une même référence dans un autre tableau. Quand le tableur a trouvé cette référence, il l'inscrit dans la cellule la valeur qui se trouve n colonne après le début du tableau

=RECHERCHEV(cellule_lue; plage_selectionnee; numero_colonne; faux)

celulle_lue : il s'agit de la cellule où Excel lit la valeur qui entraîne la recherche
t
ableau : il s'agit de la plage de cellules où Excel recherche les valeurs
numéro_de_colonne : il s'agit du numéro de la colonne du tableau où Excel doit trouver la valeur cherchée  

La lecture se fait sur les premières colonnes de chaque tableau.

Il est préférable que le tableau qui contient la plage sélectionnée soit triée en ordre croissant. La plage sélectionnée doit être nommée en référence absolue A1:C3 devenant $A$1:$C$3 ou en donnant un nom.

Si l'argument est VRAI (ou 1), Excel prend la valeur inférieure la plus proche s'il ne trouve pas la valeur exacte.
Si l'argument est FAUX (ou 0), Excel renvoie la valeur exacte, ou un message d'erreur s'il ne trouve pas de valeur exacte.
Si l'argument est omis, Excel lui attribue par défaut la valeur VRAI.

 

Pour ne pas afficher les messages d'erreur :
=+SI(ESTERREUR(D10/F10-1);"";D10/F10-1)

 

=CNUM (a1)

formule miracle qui permet d'être sur qu'un chiffre soit bien reconnu comme un chiffre et ne soit pas en fait un "texte". car si c'est un texte cela empêche les calculs.

Comparer deux colonnes
=SI(ESTERREUR(EQUIV(A2;$B$2:$B$141;0));"";A2)     Voir l'exemple
CONCATENER :

Assemble plusieurs chaînes de caractères de façon à n'en former qu'une seule =CONCATENER("Nom";B6) B6 étant la cellule où il y a le numéro. " " : entre guillemets, c'est du texte.

On peut remplacer concatener par := "texte1" & "texte2"

On peut faire toute une phrase : =CONCATENER("la facture s'élève à ";C4;" ";"euros")

 

Combiner deux tableaux dans un troisième  :  
Cryptage :
2003 d'Excel.
Outils, Options. Dans la fenêtre qui apparaît alors, activez l'onglet Sécurité. Tapez votre mot de passe dans le champ Mot de passe pour la lecture, puis cliquez sur le bouton Options avancées.

Dans la liste Choisir un type de cryptage, optez pour RC4, Microsoft Enhanced Cryptographic Provider v1.0. Conservez la valeur 128 dans le champ Longueur de clé, cochez l'option Crypter les propriétés du document puis validez par OK. Confirmez votre mot de passe, puis cliquez deux fois sur OK.

Fréquences :
=FREQUENCE(plage_a_analyser;{44;36})   :  on recherche dans la plage le nombre de fois où il y a des valeurs comprises entre 36 et 44.
Formule matricielle
Compter le nombre de fois où il y a le nombre X dans un tableau :
données  en colonne C :   =NB.SI(C:C;"x")

données dans un tableau nommé tablo:=NB.SI(tablo;"x")

ou dans une base filtrée sur x (filtre automatique) : =SOUS.TOTAL(3;B2:B100)
Nombres d'occurrences dans une plage : combien de fois 1, 2, 3, etc...
Mettons que tes données soient dans la plage A1:A100.

- Tu sélectionnes cette plage. Il faut qu'elle ait une étiquette dans la première cellule A1, "Toto" ou tout ce que tu veux.

- Tu fais Données -> Tableau croisé dynamique. Tu cliques sur "Suivant" jusqu'à l'étape 3.

- . Tu prends l'étiquette "Toto"et tu la fais glisser dans la zone "LIGNE". ou "colonne"

- Même chose, cette fois dans la zone "DONNEES".

- Si l'étiquette dans la zone "DONNEES" est devenue "Somme Toto", tu double-cliques dessus et tu sélectionnes "Synthèse par" => "Nb". Et puis tu valides tout ça.

Et voilà. Tu as un Tableau Croisé Dynamique  avec en première colonne ou ligne  chacune des valeurs différentes présentes dans ta plage et pour chacune de ces valeurs son nombre d'occurrences dans la plage.
Comment compter dans une plage donnée le nombre de fois qu'apparait une valeur comprise entre 200 et 500 ?

si les nombres sont dans la colonne A tu peux écrire   =NB.SI(A:A;">=200")-NB.SI(A:A;">500")

ou encore : =FREQUENCE(Zn;{500;199})  avec Zn correspondant à la zone nommée de recherche
DATES
la date du jour  :   =aujourdhui()
Calculer  l'age d'une personne : =(ARRONDI.INF((($b$1-a1)/365);0))
Différence de date   : =DATEDIF(datedebut;datefin;"d")   d pour jours,  "y"  pour année    "m"  pour mois.
NBVAL et NB, MAX, MIN :
Compte le nombre de cellule qui ne sont pas vide y compris les valeurs d'erreur et du texte vide " " =NBVAL(C4:C11)

=NB(CA:C11) Compte le nombre de valeur.

=MAX(C4:C11) trouve la valeur maxi =MIN(C5:C12) trouve la valeur mini

 

Remplacer un point par une virgule :
contrôle H
 recherche : .
 remplacer : ,
Extraire des données d'un tableau :

Fonctions index et equiv : télécharger le fichier excel
SI :
= si (condition;vrai;faux)
exemple : =si(c2=d1;e2;" ")
SI EST erreur
=SI(ESTERREUR(D8/E8);"";D8/E8)    ; pour afficher rien dans une cellule où il y aurait une erreur : #DIV/0!   ou   #N/A
On peut faire aussi  : si(estna  etc
Sous-total :
=sous.total(9;zone)
9 : somme     2:nb      3:nbval   
1: moyenne     4 : max     5: min
 
Séparer en deux colonnes une liste de noms et prénoms :
Sélectionner, données, convertir, espace délimité, espace.
Afficher une partie d'une cellule : =droite(A1;4) : affiche les 4 données à droite de la cellule A1.
Afficher les initiales d'un répertoire de noms :
= gauche(A2;1)& stxt(A2;cherche(" ";A2)+1;1)
Afficher les fichiers avant de les ouvrir :
Pour voir les fichiers dans l'aperçu de Fichier, Ouvrir.
Il faut faire une manipulation dans la feuille excel : Aller dans Fichiers, propriétés, activez l'onglet résumé. Cochez l'option enregistrer l'image de l'aperçu. Cliquer sur OK. Désormais une vue en miniature de l'aperçu sera visible.
Supprimer des doublons :
Tu tries ta liste par ordre alphabétique et dans la colonne a coté à la ligne 2 tu tapes la formules =si(A2=A1;"******";""), ensuite tu copies cette formule vers le bas puis tu copies-collage spéciale "valeur" toute ta colonne dans la colonne d a coté.Ensuite tu tries tes 3 colonnes sur la 3eme colonne et tu peux supprimer toutes les lignes sur lesquelles tu as ****** dans la 3eme colonne
MACRO :

Important : pour qu'un programme se fasse : 10 lignes. Pour vérifier l'environnement : 90 lignes....
Raccourci clavier, pour voir la macro : alt F11

Structure d'une macro :
Sub
Toute macro se termine par end sub

Au début d'une macro, ne pas se positionner sur la première opération.

Tout ce qui est à droite d'une apostrophe ', c'est du commentaire, non exécutable, mais important pour qu'on se rappelle ce qu'on a voulu faire. Se met en vert.

Débogage :
F8 : pour exécuter pas à pas

Insertion d'une macro :
alt f11, puis insertion module
sub titi()
msgbox ("bonjour")

puis entrée, et end sub s'affiche.  Titi est le nom de la macro. Mettre un bouton dans la feuille excel et le lier à la macro. Pour que le bouton prenne la forme des cellules, appuyer sur alt en même temps qu'on dessine le bouton.

Sub toto()
son_nom = InputBox(" tu es qui ?")
MsgBox (" ok tu peux bosser. Bonjour " & son_nom)
End Sub
 

ouverture automatique d'une macro :
 
mettre le nom de la macro. Toto, dans ce cas.
Sub auto_open()
toto
End Sub

Important :
Lecture cellule :  variable contenu =activecell.value
Ecriture cellule : activecell.value=contenu variable

 

Commencer une nouvelle macro : enregistrement relatif ou non.

boîte à outils contrôle différent de formulaires
Boîte à outils contrôle : on écrit dans la feuille
Formulaire : on écrit dans le module.

 

Aide-mémoire :
Sélectionner la première feuille du classeur : sheets(1).select
Sélectionner la cellule a1 : range("a1").select
Décaler la cellule active d'une ligne vers le bas, cellule en dessous : activecell.offset(1,0).select
Décaler la sélection active d'une ligne vers le bas, cellule en dessous : Selection.offset(1,0).select
Ecrire "coucou" dans la cellule active : activecell.value="coucou"
écrire "coucou" en a1 : range("a1").value="coucou" ou encore plus simple  range("a1")="coucou"
effacer un champs : range("a1:g2").ClearContents
copier une cellule dans une autre : range("a17")=range("a1")
masque les déplacements du curseur : application.ScreenUpdating=false
Mettre de la couleur dans une cellule : Selection.Interior.Colorindex=3   ou Selection.Interior.Color=Vbred
Ecrire en couleur dans une cellule :
Application.Range("B6").Font.Color = 255

Mettre de la couleur dans une sélection de cellule : Range("A3:b8").Interior.Color = 255

Condition simple : if   then    else

Les boites :
afficher bonjour : msgbox ("bonjour")
Mettre un message sur deux lignes :
  MsgBox (" ok tu peux bosser" & VbCrLf & " Bonjour " & son_nom)

Simplification :
Ecrit Salut dans la 4ème ligne, 2ème colonne de la feuille courante du classeur courant. En d'autres mots dans la cellule B4.
Sub Test()
Application.Cells(4,2).Value = "Salut"
End Sub
Sub Test()
 Application.Cells(4, 2) = "Salut"
 End Sub
Sub Test()
Cells(4, 2) = "Salut"
 End Sub
Remplir une grande zone, avec l'instruction de programmation For To Next :

Sub Test()
  Dim Ctr As Integer
  For Ctr = 1 To 10
    Cells(Ctr, 1) = "ca marche"
  Next
End Sub

Une autre manière de placer du texte ou du chiffre dans une cellule particuière est la méthode Range :
Application.Range("A5").Value = "Ca marche" Range("A5").Value = "Ca marche" Range("A5") = "Ca marche"

 

Range("A5:A10") = "Ca marche"
De cette manière, il est possible d'attribuer une valeur à une cellule particulière qui fait partie d'une plage de cellule, sans recourir à ActiveCell. Dans l'exemple qui précède, nous attribuons la même valeur à plusieurs cellules, mais voici la manière d'attribuer une valeur à la 3ème cellule d'une plage :

Range("A5:A10")(3) = "Trois"

Ecrit Trois dans la 3ème cellule a partir de la première cellule sélectionnée. La première est donc A5, la 2ème A6, et la 3ème A7. Excel écrit donc dans A7.

De cette manière, avec une simple boucle, on peut écrire les chiffres de 1 à 5 respectivement dans A5, A6, A7, A8 et A9, comme ceci :

Sub test()
  For Ctr = 1 To 5
    Range("A5:A10")(Ctr) = Ctr
  Next
End Sub

Ecriture dans une autre feuille ou un autre classeur

Ecriture dans une autre feuille du classeur :
Sheets("Nom de la feuille.Range("B6") = "Je suis dans une autre feuille"

Mise en rouge de cette même cellule : Sheets("Nom de la feuille").Range("B6").Font.Color = 255

Ecriture dans une autre feuille du classeur :
Windows("Autreclasseur.xls").Activate
Sheets("Janvier").Range("B11") = "toto"

 

Afficher un message avec oui ou non :

Sub tata()
rep = MsgBox("aimez vous le rock ?", vbYesNo)
If rep = vbYes Then MsgBox " ah bon"
End Sub
 

boucle 1

Cette boucle met la largeur des colonnes à 15

for i=1 to 10
selection.columnwidth=15
activecell.offset (0,1).select
next i

 

boucle 2
Avec une condition. Cette boucle met la cellule en gras
 

do while activecell <> ""
Selection.font.bold=true
Activecell.offset (1,0).select
Loop

collage spécial :
range ("c2:c8").Copy
range("b2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False

copier coller :
range ("c2:c8").Copy    ou    range ("c2:c8").Copy Activecell
range("b2").Select
ActiveSheet.Paste

mets les 15 premières colonnes à largeur 13.  On nomme le compteur "compteur" ou le nom qu'on veut

Sub larg_colonne()
Range("a1").Select
For compteur = 1 To 15
Selection.ColumnWidth = 13
ActiveCell.Offset(0, 1).Select
Next compteur

End Sub
 

Boîtes msgbox plusieurs réponses

Sub Note()
LaNote = Application.InputBox("Votre note ?", Type:=1)
If LaNote = False Then Exit Sub
Select Case LaNote
Case 0 To 10
MsgBox "Bof"
Case 10 To 15
MsgBox "Bien"
Case 15 To 18
MsgBox "Très bien"
Case 18 To 20
MsgBox "Excellent"
Case Else
MsgBox "Impossible"
End Select
End Sub

création d'un formulaire
Affichage barre d'outils, boîte à outils contrôle
alt f11
insertion UserForm
Retourner à la feuille excel
Bouton boîte de contrôle
Double-cliquer sur le bouton qu'on a mis

On se retrouve dans vba
Private Sub button_saisie_click()
UserForm1.show
end sub

Terminer le mode création en cliquant sur mode création.

caption : changer le nom dans un formulaire
Couleurs :

Mettre de la couleur dans la sélection active :
Sub coul()
Selection.Interior.ColorIndex = 4
End Sub

Mettre de la couleur dans la sélection pré-déterminée :
Sub couleur()
Range("A3:b8").Interior.ColorIndex = 4
End Sub

Déterminer l'arc en ciel des couleurs :
Sub Arc_En_Ciel()
' Ecrit toutes les couleurs des chiffres écrits dans la colonne A (1 à 56)
Range("A1").Select
Do While ActiveCell <> ""
Num_Couleur = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Selection.Interior.ColorIndex = Num_Couleur
ActiveCell.Offset(1, -1).Select
Loop
Range("B1").Select
End Sub

 

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  

 

Sub insertion_lignes()

' 'insere 7 lignes vides de la ligne 2 jusqu'à la fin du tableau
'
Rows("2:2").Select
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Rows("1:7").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(7, 0).Rows("1:1").EntireRow.Select
Loop
End Sub
Sub recopie_lignes()
'
'recopie en collage spécial 7 fois les 7 premières cellules de la ligne à 'partir de la ligne 2 et jusqu'à la fin du tableau
'
Range("A2:E2").Select
Do While ActiveCell <> ""
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1:A7").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(7, 0).Range("A1:E1").Select
Application.CutCopyMode = False
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1:e7").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveCell.Offset(7, 0).Range("A1:e1").Select
Loop
End Sub
insérer dans un tableau une ligne vide toutes les deux lignes (ou plus)

Sub MacroInsertUneLigneSurDeux()
'Permet d 'insérer dans un tableau une ligne vide toutes les deux lignes (ou plus)

Dim Line As Integer
Range("A2").Select
Line = 1
Recommence:
Line = Line + 2
Rows(Line).Select
Selection.Insert Shift:=xlDown
If Line < ActiveSheet.UsedRange.Rows.Count Then
GoTo Recommence
End If
End Sub

Rechercher le nombre d'occurence dans une plage
Sub RechercheNbOccurence()

'Ce programme va compter le nombre de fois qu'il rencontre la valeur ValeurAChercher
Résultat = Application.CountIf(Range("A:h"), "k")
MsgBox ("Le texte ValeurAChercher est présent : " & Résultat & " fois.")
End Sub
Supprimer les lignes vides

Sub DetruireLigne()
'Ce programme supprime les lignes vides dans une plage.
DerniereLigne = ActiveSheet.UsedRange.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To 1 Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R
End Sub

Sub copie_motif()
'
''recopie un certain nombre de fois des données en lignes par paquet de trois dans une trois colonnes, puis colorie en rouge les cellules que l'on vient de coller


Range("j2:l2").Select

ActiveCell.Offset(0, 3).Range("A1:C1").Select
For i = 1 To 500
Selection.Copy
ActiveCell.Offset(1, -3).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(-1, 6).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
ActiveCell.Offset(2, -6).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(-2, 9).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy
ActiveCell.Offset(3, -9).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(-3, 12).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy

ActiveCell.Offset(4, -12).Range("A1").Select
ActiveSheet.Paste

ActiveCell.Offset(-4, 15).Range("A1:C1").Select
Application.CutCopyMode = False
Selection.Copy

ActiveCell.Offset(5, -15).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(3, 3).Range("A1:C1").Select
Application.CutCopyMode = False
Next i
Range("m2:aa3800").Interior.Color = 255


End Sub
 
Faire une cellulle arrondie

Sub CelluleArrondie()
Set depart = ActiveCell
r1 = depart.Height
r2 = depart.Width
r3 = depart.Top
r4 = depart.Left

ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, _
r4, r3, r2, r1).Select
Selection.ShapeRange.Fill.Visible = msoFalse
depart.Select

End Sub
 

Effacer liens hypertextes


Sub effacer_liens_hypertexte()

'effacer liens hypertextes du tableau tant qu'il y a des cellules actives
'on doit sélectionner d'abord la zone sur laquelle on veut travailler

Do While ActiveCell <> ""

Selection.Hyperlinks.Delete

'faire d'abord les colonnes, puis ensuite les lignes

ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, 1).Select
Loop

End Sub