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 :

Problème de tableau a une seule cellule.


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut Problème de tableau a une seule cellule.
    Bonjour,

    j'ai écrit ce code (avec votre aide):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If Source <> "" Then  --> Source est de type: "Feuil1!$A$8"
     
       Set T = Range(Replace(Source.Value, ";", ","))
     
     End If
     
    MsgBox ("coucou" & UBound(T, 2))
    Cependant lorsqu'il n'y a qu'une valeur de selectionnée je me retrouve avec un message d'erreur, comment puis je faire pour que cela marche? Car j'ai besoin de la taille de la selection.

    Merci.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Qu'entends-tu par
    Cependant lorsqu'il n'y a qu'une valeur de selectionnée je me retrouve avec un message d'erreur, comment puis je faire pour que cela marche? Car j'ai besoin de la taille de la selection

    ... de la taille du tableau ? Sur quelle ligne, l'erreur ?
    Donne-nous un exemple de valeur de "source"

    A+

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    J'ai une erreur d'execution 13. Incompatibilité de type.

    Je voudrais pouvoir récupérer le nombre de ligne et de colonne du tableau T.

    La selection de source se fait avec un refedit et pose problème lorsqu'une seule cellule est selectionnée.

    Source = "Feuil1!$A$8"

    Merci de ton aide.

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je n'ai pas replace (vba97) mais pour le reste, tu as un pb dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Source = Range("Feuil1!$A$8").Address
    If Source <> "" Then
        Valeur = Range(Source).Value
        'Set T = Replace(Valeur, ";", ",")
    End If
     
    MsgBox ("coucou" & UBound(T, 2))
    Sinon, tu dois instancier Source pour pouvoir dire "Source = Range("Feuil1!$A$8")
    Tu dis

    A+

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    En fait source c'est le nom de mon refedit, donc je ne m'en occupe pas, mon code marche sauf si je ne selectionne qu'une seule case. J'ai l'impression que lorsqu'il n'y a qu'une case il ne le considere plus comme un tableau!!!
    Je voudrais pouvoir savoir que mon tableau est de taille (1,1)!!!
    Merci de ton aide.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors tu devras dimensionner ton tableau au départ, analyser les valeurs de ta cellule dans une boucle en fonction du nombre de ";" et redimensionner pour chacun d'eux avec redim preserve.
    Je n'ai jamais entendu parler d'un code permettant d'avoir un tableau à deux dimensions avec ta syntaxe Mais si ça existe, je serai ravi d'apprendre

    Bonne chance

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Tu as une idée? J'accepte de modifier mon code.
    Comment récupérer dans un tableau les valeurs séléctionnés par l'utilisateur avec un refedit, pour ensuite pouvoir utiliser ce tableau pour faire des calculs...

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    1 - Tu déclares ton tableau à deux dimensions "Dim leTableau(TonX,0)"
    (Tu dois fixer la valeur de TonX au départ car tu ne peux pas la redimensionner)
    2 - Tu récupères LeContenu de ta cellule dans un tableau à une dimension et en sépares les éléments "LeContenu=Split(Lacellule,";")"
    4 - Tu récupères la dimension de ton tableau "NbIndex=ubound(LeContenu)
    5 - Tu redimensionnes la deuxième dimension de LeTableau "ReDim LeTableau(TonX,NbIndex)"
    6 - Tu le remplis avec les données contenues dans le tableau LeContenu
    Là, n'ayant jamais essayé de le faire par une simple égalité telle que
    "LeTableau(Valeur,NbIndex) = LeContenu"

    tu essaies pour moi , et si ça ne fonctionne pas tu fais ça dans une boucle
    For i = 0 to NbIndex
    LeTableau(TonX,i) = LeContenu(i)
    Next

    Juste pour l'idée

    A+
    Tu dis

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox ("coucou" & UBound(T, 2))
    Forcément, si tu demandes la 2e dimension d'un tableau à 1 dimension (et même, à une seule valeur), tu auras une erreur.

    Si j'ai bien compris, tu veux mettre toutes les cellules de la sélection dans un tableau?

    Je n'ai pas le temps maintenant (et probablement pas aujourd'hui) mais je ferai un essai mercredi si toujours pas résolu.

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par Chouls
    Bonjour,

    j'ai écrit ce code (avec votre aide):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If Source <> "" Then  --> Source est de type: "Feuil1!$A$8"
     
       Set T = Range(Replace(Source.Value, ";", ","))
     
     End If
     
    MsgBox ("coucou" & UBound(T, 2))
    Cependant lorsqu'il n'y a qu'une valeur de selectionnée je me retrouve avec un message d'erreur, comment puis je faire pour que cela marche? Car j'ai besoin de la taille de la selection.

    Merci.
    ben si je regarde ton code T n'est pas un tableau mais un range... , utilise les propriétés d'un range !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox t.Rows.Count & " --- " &  t.Columns.Count

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 13
    Points : 5
    Points
    5
    Par défaut
    Je n'ai tojours pas trouvé de réponse "simple", j'ai bidouillé quelque chose qui marche mais ce n'est pas forcément génial.

    Merci de votre aide.

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Plutôt que de passer par un tableau, je te conseille d'utiliser un Range.

    Petit exemple qui marche à tous les coups:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cmdStart_Click()
      Dim rSelection As Range
      MsgBox RefEdit1.Text
      Set rSelection = Range(Replace(RefEdit1.Text, ";", ","))
      MsgBox rSelection.Count
    End Sub
    Si tu veux parcourir toutes les cellules de cette sélection:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub cmdStart_Click()
      Dim rSelection As Range
      Dim rCell As Range
      MsgBox RefEdit1.Text
      Set rSelection = Range(Replace(RefEdit1.Text, ";", ","))
      MsgBox rSelection.Count
      For Each rCell In rSelection
        MsgBox rCell.Address & ": " & rCell.Value
      Next rCell
    End Sub

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. Réponses: 3
    Dernier message: 22/10/2008, 21h00
  4. [JTable] Changer le contenu d'une seule cellule
    Par terminagroo dans le forum Composants
    Réponses: 7
    Dernier message: 05/07/2005, 13h50
  5. [JTable] Sélection d'une seule cellule
    Par Amara dans le forum Composants
    Réponses: 2
    Dernier message: 01/06/2005, 14h48

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