Aide:Transformer un tableau Excel en tableau WikiGenWeb : Différence entre versions

De WikiGenWeb
Aller à : navigation, rechercher
m (Travaux à exécuter sur Excel)
m (Création d'une macro)
Ligne 32 : Ligne 32 :
 
<pre>
 
<pre>
 
Sub xls_to_wgw()
 
Sub xls_to_wgw()
   
 
    On Error Resume Next
 
    titre = "Excel to WikiGenWeb"
 
   
 
    ncols = Application.InputBox("Nombre de colonnes à partir de A ?", titre)
 
    nrows = Application.InputBox("Nombre de lignes à partir de 1 ?", titre)
 
   
 
    Range("A1:" & Chr(ncols + 64) & "1").Select
 
    For Each cell In Selection
 
        If cell.Value = "" Then
 
            If MsgBox("Au moins 1 colonne de la ligne 1 n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then
 
                Exit Sub
 
            End If
 
        End If
 
    Next cell
 
   
 
    Range("A1:A" & nrows).Select
 
    For Each cell In Selection
 
        If cell.Value = "" Then
 
            If MsgBox("Au moins 1 ligne de la colonne A n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then
 
                Exit Sub
 
            End If
 
        End If
 
    Next cell
 
 
        
 
        
    nom = ActiveSheet.Name
+
  On Error Resume Next 
    Sheets("xls_to_wgw").Select
+
  titre = "Excel to WikiGenWeb" 
    ActiveWindow.SelectedSheets.Delete
+
     
    Sheets(nom).Select
+
  ncols = Application.InputBox("Nombre de colonnes à partir de A ?", titre) 
    ActiveSheet.Copy After:=ActiveSheet
+
  nrows = Application.InputBox("Nombre de lignes à partir de 1 ?", titre) 
    ActiveSheet.Name = "xls_to_wgw"
+
     
    Sheets("xls_to_wgw").Select
+
  Range("A1:" & Chr(ncols + 64) & "1").Select 
    Cells.Select
+
  For Each cell In Selection 
    Application.CutCopyMode = False
+
  If cell.Value = "" Then     
    Selection.ClearContents
+
  If MsgBox("Au moins 1 colonne de la ligne 1 n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then         
    Sheets(nom).Select
+
  Exit Sub             
    Range("A1:" & Chr(ncols + 64) & nrows).Select
+
  End If         
    Selection.Copy
+
  End If     
    Sheets("xls_to_wgw").Select
+
  Next cell 
    Range("A1").Select
+
     
    ActiveSheet.Paste
+
  Range("A1:A" & nrows).Select 
    Columns("A:A").Select
+
  For Each cell In Selection 
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
+
  If cell.Value = "" Then     
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
+
  If MsgBox("Au moins 1 ligne de la colonne A n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then         
    Rows("1:1").Select
+
  Exit Sub             
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
+
  End If         
       
+
  End If     
    Range("B2").Select
+
  Next cell 
    Columns("B:B").ColumnWidth = 120
+
     
    Range("B2").Select
+
  nom = ActiveSheet.Name  
   
+
  Sheets("xls_to_wgw").Select  
    For rwIndex = 2 To nrows + 1
+
  ActiveWindow.SelectedSheets.Delete  
        texte = "<!-- (L " & rwIndex - 1 & ") -->|-"
+
  Sheets(nom).Select  
        For colIndex = 3 To ncols + 2
+
  ActiveSheet.Copy After:=ActiveSheet  
            texte = texte & "|" & Cells(rwIndex, colIndex) & "|"
+
  ActiveSheet.Name = "xls_to_wgw"  
        Next colIndex
+
  Sheets("xls_to_wgw").Select  
        texte = Left(texte, Len(texte) - 1)
+
  Cells.Select  
        Cells(rwIndex, 2) = texte
+
  Application.CutCopyMode = False  
    Next rwIndex
+
  Selection.ClearContents  
   
+
  Sheets(nom).Select  
    Set fs = CreateObject("Scripting.FileSystemObject")
+
  Range("A1:" & Chr(ncols + 64) & nrows).Select  
    Set a = fs.CreateTextFile("c:\excel-to-mediawiki.txt", True)
+
  Selection.Copy  
    a.WriteLine ("{| class=wikitable")
+
  Sheets("xls_to_wgw").Select  
    Range("B2:B" & nrows + 1).Select
+
  Range("A1").Select  
    For Each cell In Selection
+
  ActiveSheet.Paste  
        texte = Replace(cell.Value, "|-", "|-" & vbCrLf)
+
  Columns("A:A").Select  
        a.WriteLine (texte)
+
  Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove  
    Next cell
+
  Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove  
    a.WriteLine ("|}")
+
  Rows("1:1").Select  
    a.Close
+
  Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove  
    Range("B2").Select
+
       
    Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(nrows - 1, 0)).Select
+
  Range("B2").Select  
    MsgBox "La feuille Excel " & Sheets(nom).Name & " a été transformée en fichier WikiGenWeb sour le nom c:\excel-to-mediawiki.txt que vous devez copier dans votre article." & vbCrLf _
+
  Columns("B:B").ColumnWidth = 120  
    & ncols & " colonnes." & vbCrLf & nrows & " lignes."
+
  Range("B2").Select  
   
+
     
 +
  For rwIndex = 2 To nrows + 1  
 +
  texte = "<!-- (L " & rwIndex - 1 & ") -->|-"      
 +
  For colIndex = 3 To ncols + 2      
 +
  texte = texte & "|" & Cells(rwIndex, colIndex) & "|"          
 +
  Next colIndex      
 +
  texte = Left(texte, Len(texte) - 1)      
 +
  Cells(rwIndex, 2) = texte      
 +
  Next rwIndex  
 +
     
 +
  Set fs = CreateObject("Scripting.FileSystemObject")  
 +
  Set a = fs.CreateTextFile("c:\excel-to-mediawiki.txt", True)  
 +
  a.WriteLine ("{| class=wikitable")  
 +
  Range("B2:B" & nrows + 1).Select  
 +
  For Each cell In Selection  
 +
  texte = Replace(cell.Value, "|-", "|-" & vbCrLf)      
 +
  a.WriteLine (texte)      
 +
  Next cell  
 +
  a.WriteLine ("|}")  
 +
  a.Close  
 +
  Range("B2").Select  
 +
  Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(nrows - 1, 0)).Select  
 +
  MsgBox "La feuille Excel " & Sheets(nom).Name & " a été transformée en fichier WikiGenWeb sour le nom c:\excel-to-mediawiki.txt que vous devez copier dans votre article." & vbCrLf _  
 +
  & ncols & " colonnes." & vbCrLf & nrows & " lignes."  
 +
     
 
End Sub
 
End Sub
 
</pre>
 
</pre>
 +
 +
 +
 +
 +
'''Ne pas fermer la page des macros et cocher une référence supplémentaire obligatoire.'''
 +
*Cliquer sur menu : outils et ensuite sur références
 +
*Cocher la case Microsoft Scripting Runtime dans la liste affichée
 +
*Cliquer sur OK
 +
*Enregistrer
 +
*Fermer la page des macros
  
 
==Travaux de mise en forme sous éditeur==
 
==Travaux de mise en forme sous éditeur==

Version du 24 février 2011 à 21:47

Objectif

Cet article doit vous permettre de transformer une feuille Excel en un tableau WikiGenWeb, c'est à dire transformer du code application VBA en code wiki.

Nous avons choisi un exemple simple pour bien comprendre le déroulement de la procédure. Pour votre cas pratique vous devrez ajouter les sélections supplémentaires de cellules que vous devez transformer, notamment les liens.

Les clauses de style que ce soit pour la couleur, la police, la mise en page etc.... seront ignorés.

Source et cible

Votre feuille Excel est celle indiquée ci-dessous et vous devez retrouver le même tableau dans votre article WikiGenWeb, sauf la couleur.

Nom Sx Date Age Date de N Père Mère Conjoint
8 CAYRÉ Jean Louis M 25/05/1837 61 ans 1776
12 DELFOS Justine F 27/04/1895 81 ans 1814 DELFOS Vidal DELFOS Jeanne PAGES Casimir
6 DUMAS Marie Jeanne F 26/07/1801 19 mois 1799 DUMAS Claude MARTIN Delphine
5 TALON Barthélémy M 26/06/1763 80 ans 1683

Travaux à exécuter sur Excel

  • Ouvrir votre fichier Excel ou placer une copie de votre feuille à partir de la cellule A1

Création d'une macro

  • Passer en création de macro pour venir sur la page de saisie du code VBA
  • Copier la macro ci-dessous sur la page affichée
Sub xls_to_wgw()
      
  On Error Resume Next   
  titre = "Excel to WikiGenWeb"   
      
  ncols = Application.InputBox("Nombre de colonnes à partir de A ?", titre)   
  nrows = Application.InputBox("Nombre de lignes à partir de 1 ?", titre)   
      
  Range("A1:" & Chr(ncols + 64) & "1").Select   
  For Each cell In Selection   
  If cell.Value = "" Then       
  If MsgBox("Au moins 1 colonne de la ligne 1 n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then           
  Exit Sub               
  End If           
  End If       
  Next cell   
      
  Range("A1:A" & nrows).Select   
  For Each cell In Selection   
  If cell.Value = "" Then       
  If MsgBox("Au moins 1 ligne de la colonne A n'est pas renseignée." & vbCrLf & "Continuer ?", vbYesNo, titre) = vbNo Then           
  Exit Sub               
  End If           
  End If       
  Next cell   
       
  nom = ActiveSheet.Name   
  Sheets("xls_to_wgw").Select   
  ActiveWindow.SelectedSheets.Delete   
  Sheets(nom).Select   
  ActiveSheet.Copy After:=ActiveSheet   
  ActiveSheet.Name = "xls_to_wgw"   
  Sheets("xls_to_wgw").Select   
  Cells.Select   
  Application.CutCopyMode = False   
  Selection.ClearContents   
  Sheets(nom).Select   
  Range("A1:" & Chr(ncols + 64) & nrows).Select   
  Selection.Copy   
  Sheets("xls_to_wgw").Select   
  Range("A1").Select   
  ActiveSheet.Paste   
  Columns("A:A").Select   
  Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove   
  Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove   
  Rows("1:1").Select   
  Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove   
         
  Range("B2").Select   
  Columns("B:B").ColumnWidth = 120   
  Range("B2").Select   
      
  For rwIndex = 2 To nrows + 1   
  texte = "<!-- (L " & rwIndex - 1 & ") -->|-"       
  For colIndex = 3 To ncols + 2       
  texte = texte & "|" & Cells(rwIndex, colIndex) & "|"           
  Next colIndex       
  texte = Left(texte, Len(texte) - 1)       
  Cells(rwIndex, 2) = texte       
  Next rwIndex   
      
  Set fs = CreateObject("Scripting.FileSystemObject")   
  Set a = fs.CreateTextFile("c:\excel-to-mediawiki.txt", True)   
  a.WriteLine ("{| class=wikitable")   
  Range("B2:B" & nrows + 1).Select   
  For Each cell In Selection   
  texte = Replace(cell.Value, "|-", "|-" & vbCrLf)       
  a.WriteLine (texte)       
  Next cell   
  a.WriteLine ("|}")   
  a.Close   
  Range("B2").Select   
  Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(nrows - 1, 0)).Select   
  MsgBox "La feuille Excel " & Sheets(nom).Name & " a été transformée en fichier WikiGenWeb sour le nom c:\excel-to-mediawiki.txt que vous devez copier dans votre article." & vbCrLf _   
  & ncols & " colonnes." & vbCrLf & nrows & " lignes."   
      
End Sub



Ne pas fermer la page des macros et cocher une référence supplémentaire obligatoire.

  • Cliquer sur menu : outils et ensuite sur références
  • Cocher la case Microsoft Scripting Runtime dans la liste affichée
  • Cliquer sur OK
  • Enregistrer
  • Fermer la page des macros

Travaux de mise en forme sous éditeur

  • Sélectionner toute la colonne J et Faire un copier/coller dans un éditeur.
    Cet éditeur doit être capable de traiter les caractères génériques (codes ASCII de 01 à 31)
    Par exemple, l'éditeur gratuit Notepad++ convient très bien.
  • Votre fichier doit se présenter sous cette forme, par exemple.
{|
|-|||niveau1||niveau2||niveau3||niveau4||niveau5||total

|-|ABBR||1||||||||||1
|}
  • Exécuter une fonction de remplacement dans tout le fichier: remplacer les caractères |- par les caractères |-\n
  • Votre fichier doit se présenter sous cette nouvelle forme, par exemple.
{|
|-
|||niveau1||niveau2||niveau3||niveau4||niveau5||total
|-
|ABBR||1||||||||||1
|}
  • Si les caractères |- ne se retrouvent pas seuls sur la ligne, soit vous avez commis une erreur, soit votre éditeur ne sait pas traiter les caractères génériques.

Notepad++ gère très bien ce type de caractères.

  • Faites un copier de l'ensemble de votre fichier, et passez sous WikiGenWeb.

Création du tableau sous WikiGenWeb

  • Placez-vous à l'endroit où doit être placé le tableau, faîtes un coller.
  • Vous devez obtenir ce texte :
{|
|-              
|N°||Nom||Sx||Date||Age||Date de N||Père||Mère||Conjoint              
|-
|8||CAYRÉ Jean Louis||M||25/05/1837||61 ans||1776|| || ||              
|-
|12||DELFOS Justine||F||27/04/1895||81 ans||1814||DELFOS Vidal||DELFOS Jeanne||PAGES Casimir              
|-
|6||DUMAS Marie Jeanne||F||26/07/1801||19 mois||1799||DUMAS Claude||MARTIN Delphine||              
|-
|5||TALON Barthélémy||M||26/06/1763||80 ans||1683|| || ||              
|}
  • Entrez les paramètres de style de votre tableau, comme indiqué ci-dessous :
    • Sur la 1e ligne {| , ajouter le texte « class=wikitable »
    • Sur la 3e ligne, remplacez le premier pipe (|) par un point d'exclamation
{| class=wikitable
|-
!N°||Nom||Sx||Date||Age||Date de N||Père||Mère||Conjoint            
|-
|8||CAYRÉ Jean Louis||M||25/05/1837||61 ans||1776|| || ||            
|-
|12||DELFOS Justine||F||27/04/1895||81 ans||1814||DELFOS Vidal||DELFOS Jeanne||PAGES Casimir            
|-
|6||DUMAS Marie Jeanne||F||26/07/1801||19 mois||1799||DUMAS Claude||MARTIN Delphine||            
|-
|5||TALON Barthélémy||M||26/06/1763||80 ans||1683|| || ||            
|}
  • Votre tableau est terminé : Cliquez sur Prévisualiser
  • Vous devez obtenir ce tableau :
Nom Sx Date Age Date de N Père Mère Conjoint
8 CAYRÉ Jean Louis M 25/05/1837 61 ans 1776
12 DELFOS Justine F 27/04/1895 81 ans 1814 DELFOS Vidal DELFOS Jeanne PAGES Casimir
6 DUMAS Marie Jeanne F 26/07/1801 19 mois 1799 DUMAS Claude MARTIN Delphine
5 TALON Barthélémy M 26/06/1763 80 ans 1683

Mise en forme

Votre tableau étant maintenant réalisé, rendez-vous dans le Manuel de l'éditeur pour mettre en valeur votre réalisation par des enrichissements de caractères.