diff --git a/include/property.hpp b/include/property.hpp
index 7a070938b3d63dd897b27a3cc9a0099fb5232aa9..42b72d62c7d6d58a4b6ddb6af6d71a9750fae942 100644
--- a/include/property.hpp
+++ b/include/property.hpp
@@ -159,6 +159,28 @@ public:
     std::string str;
 };
 
+/**
+\class HelpProperty
+
+\brief Représente un bouton permettant l'affichage d'un manuel.
+**/
+struct HelpProperty : public PropertyImpl<StringProperty>
+{
+public:
+    //! \brief Constructeur par défaut.
+    HelpProperty() = default;
+    /** \brief Constructeur avec valeur initiale.
+        \param initval Valeur initiale.
+    **/
+    HelpProperty(const std::string& initval)
+        : str(initval)
+    {}
+
+public:
+    //! \brief La chaîne de caractères contenant l'aide.
+    std::string str;
+};
+
 /**
 \class IntegerProperty
 
diff --git a/include/propertyvisitors.hpp b/include/propertyvisitors.hpp
index 2af21eb06a7e97de73406039befa405f5c48c352..1651f9cce56b4d91a3b338d27fc26ac7c1ccdc87 100644
--- a/include/propertyvisitors.hpp
+++ b/include/propertyvisitors.hpp
@@ -59,6 +59,7 @@ private:
     void visit(IntegerProperty& prop);
     void visit(CoordinateProperty& prop);
     void visit(PropertyList& list);
+    void visit(HelpProperty&);
 
 private:
     std::stack<QWidget*> m_widget_hierarchy;
@@ -88,6 +89,7 @@ private:
     void visit(IntegerProperty& prop);
     void visit(CoordinateProperty& prop);
     void visit(PropertyList& list);
+    void visit(HelpProperty&) {}
 
 private:
     std::stack<QVariant> m_current_hierarchy;
@@ -114,6 +116,8 @@ private:
     void visit(IntegerProperty& prop);
     void visit(CoordinateProperty& prop);
     void visit(PropertyList& prop);
+    void visit(HelpProperty&) {}
+
 private:
     std::stack<QJsonValue> m_current_hierarchy;
 };
diff --git a/include/transition_rules/totalistictransition.hpp b/include/transition_rules/totalistictransition.hpp
index 7cac023b22b902f887505c4db12c7f943ce78fab..afbeabdacf2f2b56b5bccbf05265b744f5210939 100644
--- a/include/transition_rules/totalistictransition.hpp
+++ b/include/transition_rules/totalistictransition.hpp
@@ -130,6 +130,7 @@ private:
 private:
     mutable std::vector<TotalisticRuleEntry> m_entries;
     DEFINE_CONFIGURABLE_PROPERTY(StringProperty, rule_string, "Rule String");
+    DEFINE_CONFIGURABLE_PROPERTY(HelpProperty, help_string, "All your base are belong to us");
 };
 
 #endif // TOTALISTICTRANSITIONRULE_HPP
diff --git a/src/automaton.cpp b/src/automaton.cpp
index db54b09fd3f2b68e863b9b842ac8a0a978500989..f353bdb5fea5fc6d03e04b0d21b37687711ec6a8 100644
--- a/src/automaton.cpp
+++ b/src/automaton.cpp
@@ -9,8 +9,8 @@ Automaton::~Automaton() {
 
 void Automaton::setAlphabet(const Alphabet& A) {
     alphabet = A;
-    for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) {
-        for(int j=0; j<static_cast<int>(grid.get_col()); ++j) {
+    for(int i=0; i<static_cast<int>(grid.get_col()); ++i) {
+        for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) {
             grid.set_cell({i,j}, 0);
         }
     }
@@ -45,8 +45,8 @@ const Grid& Automaton::getGrid() const {
 void Automaton::setGrid(const Grid& G) {
     grid = G;
     unsigned int state;
-    for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) {
-        for(int j=0; j<static_cast<int>(grid.get_col()); ++j) {
+    for(int i=0; i<static_cast<int>(grid.get_col()); ++i) {
+        for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) {
             state = grid.get_state({i,j});
             if(state >= alphabet.taille()) {
                 grid.set_cell({i,j}, state%alphabet.taille());
@@ -57,8 +57,8 @@ void Automaton::setGrid(const Grid& G) {
 
 void Automaton::runOnce() {
     Grid tempGrid(grid);
-    for(int i=0; i<static_cast<int>(grid.get_rows()); ++i) {
-        for(int j=0; j<static_cast<int>(grid.get_col()); ++j) {
+    for(int i=0; i<static_cast<int>(grid.get_col()); ++i) {
+        for(int j=0; j<static_cast<int>(grid.get_rows()); ++j) {
              tempGrid.set_cell({i, j}, transitionRule->getState(grid.get_state({i,j}),neighbourhoodRule->getNeighborhood(grid, {i, j}))%alphabet.taille());
         }
     }
diff --git a/src/uibuildervisitor.cpp b/src/uibuildervisitor.cpp
index 8529205f5cdee278461ec256d509efaca7aafcd7..05a1f576bf52d7d13ce8438b131711323d99ddf2 100644
--- a/src/uibuildervisitor.cpp
+++ b/src/uibuildervisitor.cpp
@@ -130,6 +130,17 @@ void UIBuilderVisitor::visit(CoordinateProperty &prop)
                      [&prop](int i) { prop.c.y = i; });
 }
 
+void UIBuilderVisitor::visit(HelpProperty& prop)
+{
+    QPushButton* button = new QPushButton("Help", current_widget());
+    add_widget("", button);
+
+    QObject::connect(button, &QPushButton::clicked,
+                     [&prop]() {
+        QMessageBox::information(NULL, "Help", QString::fromStdString(prop.str));
+    });
+}
+
 void UIBuilderVisitor::visit(PropertyList &list)
 {
     push_array_widget(list);