IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonction Split ne reconnait pas les valeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Par défaut Fonction Split ne reconnait pas les valeurs
    Bonjour,
    Pour un projet informatique nous devons créer un sudoku, nous travaillons actuellement sur la fonction "generer", donc des permutations sur une grille initiale.
    Dans une feuille "Programmation" nous avons inclus la grille résolue initiale sur laquelle nous faisons les permutations.
    La fonction "split" qui nous permettrait de diviser la grille en 9 colonnes ne semble pas reconnaitre ces colonnes.
    Voila notre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Option Explicit
     
    Sub Generer()                        'Génère la grille de sudoku
    Application.ScreenUpdating = False   'Désactive l'affichage de la grille à chaques nouvelles permutations
    Sheets("Programmation").Visible = 1  'Active la visibilité de la feuille "Programmation" pour nous permettre de réaliser la fonction
    Sheets("Programmation").Select
        Dim nbdif As Integer             'Nombre de cases à masquer en fonction du niveau de difficulté
        Dim nbcase As Integer            'Variable de 1 à nbdif pour réaliser la fonction masquer
        Dim i As Byte                    'Ligne de la grille finale
        Dim j As Byte                    'Colonne de la grille finale
        Dim var As Byte                  'Variable aléatoire de permutation
        Dim attribution() As String      'Texte
        Dim pas As Byte                  'Permet de garder les petites colonnes et lignes par groupe de 3 lors des permutations
        Dim grille() As Variant          'Grille provisoire pour chaques permutations
        Dim grillefinale() As Variant    'Grille finale recopiée dans la feuille de jeu
        Dim memoireune As Byte
        Dim memoiredeux As Byte
     
     
     
        pas = 0                             'Permutations des petites colonnes
     
        For pas = 0 To 6 Step 3
        'pas prend comme valeur 0, 3 ou 6
        i = 0
        memoireune = 0
        var = 0
        memoiredeux = 0
     
            For i = 1 + pas To 3 + pas
                While var = memoireune Or var = memoiredeux       'A chaque colonne est attribué un réel entre 1 et 3
                    Randomize                                     'Permet au générateur de nombre aléatoires de démarrer à chaque fois sur une valeur différente
                    var = Int((3 * Rnd) + 1)                      'Retourne un nombre aléatoire entre la valeur max et la valeur min: Int((valeur max -valeur min +1) * Rnd + valeur min)
                Wend
     
            attribution() = Split(" ca cb cc cd ce cf cg ch ci ") '"Split" permet de découper la chaîne de caractères
            grille = Range(attribution(var + pas))                'La colonne est affectée à la variable matrice
            Range(Cells(9, i + 14), Cells(8 + UBound(grille, 1), i + 14)) = grille
     
            If i = 1 + pas Then                                   'Empêche la répétition d'une colonne
                memoireune = var
                Else: memoiredeux = var
            End If
     
            Next i
        Next pas
    Cf fichier joint pour la feuille programmation

    Merci beaucoup
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Quant on utilise une fonction il est bon de regarder l'aide sur la syntaxe.

    Tu ne mets pas de délimiteur.

    Philippe

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    la fonction split sert a découper une variable de type string ou valeur en dur
    ensuite il faut l'argument de découpage en général aussi une variable string ou une valeur en dur

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'variable a découper
    var1="je suis sur DVP"
    pour le découper mot par mot on utilisera les espaces entre les mots comme argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'résultat
    tableau=split (var1," ")' dans le tableau on obtiens ainsi tout les mots séparés
    le premier mot du tableau sera l'élément(0) du tableau et ainsi de suite pour les suivants
    si on voulais récupérer "DVP" de la variable on ferait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat=split(var1," ")(3)' le 3ème élément étant le dernier
    Au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Pour info, Split sans délimiteur considère l'espace comme séparateur, cf son aide intégrée, donc son code n'est pas faux !

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il ne faut pas mettre les parenthèses à la variable, le compilateur dimensionne lui même le tableau mais pour ça, il faut que la variable soit de type variant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    attribution = Split(" ca cb cc cd ce cf cg ch ci ")
    'et non
    attribution() = Split(" ca cb cc cd ce cf cg ch ci ")
    Hervé.

Discussions similaires

  1. Créer une fonction : Renvoi pas les valeurs
    Par diego45 dans le forum MATLAB
    Réponses: 1
    Dernier message: 25/07/2014, 19h04
  2. Visual Basic ne reconnait pas les fonctions de base
    Par mdromzee dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/05/2010, 01h22
  3. Réponses: 7
    Dernier message: 22/04/2010, 15h45
  4. Réponses: 3
    Dernier message: 19/10/2009, 16h52
  5. Réponses: 6
    Dernier message: 30/01/2008, 20h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo