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

VB 6 et antérieur Discussion :

rechercher l'adresse d'une cellule via une date dans un MSFlexgrid


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut rechercher l'adresse d'une cellule via une date dans un MSFlexgrid
    Bonjour à tous,

    j'ai un problème un peu ardu que je ne sais pas résoudre malgré mes recherches. Sur une forme j'ai 2 flexgrid : la première n'a qu'une ligne ou s'inscrivent des dates par calcul à partir d'un textbox.
    la deuxième est un tableau dont les colonnes correspondent à la première msfexgrid.
    Le Flexgrid qui sert de tableau est dévérouillé et je rentre des valeurs ligne par ligne sur les 4 premières colonnes, donc je dois pouvoir récupérer le N° de ligne ?
    c'est mon premier problème car j'en suis rester au vba avec xlup et je ne sais trop comment faire pour récupérer l'adresse de la dernière cellule ou j'ai écrit, en plus l'opération va se dérouler sur une autre form que j'ai transformée en palette de couleur
    Si j'ai le N° de la ligne, ensuite je dois trouver le N° de la première colonne grasse aux dates de la première flexgrid
    exemple: ma tâche commence le 10 janvier 2013 qui correspond à un N° de colonne. est-il possible de rechercher la date avec la méthode find ou match ?
    mais je dois aussi trouver la date de fin de la tâche, puis sélectionner , ou faire une boucle depuis la date de début jusqu'à la date de fin afin de colorier les cellule avec la couleur choisie de ma palette

    ce code color bien mes cellules reste à savoir comment faire pour l'exécuter sur les cellules concernées :
    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
    Private Sub Picture18_Click()
    'picture18 est la commande vbred de ma palette
    Dim C As Long, l As Long, d As Date
    'pour le moment j'imput un N° de ligne au hasard tant que je ne sais pas comment faire pour le récupérer
    l = 5
    'il faudrait que je commence à rechercher aprés avoir choisi la date
    If Me.Text1.Text <> "" Then
    'la textbox contiendra la date de début
    d = Me.Text1.Text
    End If
    'date de début en imposant une colonne en attendant de savoir la recherchée
    'le msflexgrid2 contient les dates
    frmMain.MSFlexGrid2.Col = 5
    frmMain.MSFlexGrid2.Row = 0
    'je récupère le N° de colonne de début en aveugle
    C = frmMain.MSFlexGrid2.Col
    'je multiplie c par 2 car il y a 2 fois plus de colonnes dans le tableau
    C = C * 2
    'je récupère N° de colonne de fin (bien sur je mettrais une formule pour que la date ce calcul toute seul
    frmMain.MSFlexGrid2.Col = 8
    frmMain.MSFlexGrid2.Row = 0
    'toujours sans savoir ou la trouver
    f = frmMain.MSFlexGrid2.Col
    f = f * 2
    'boucle pour colorer les cellules du tableau entre le début et la fin de la tâche
    'une boucle bisard à ma façon
    boucle:
    frmMain.MSFlexGrid1.Col = C
    frmMain.MSFlexGrid1.Row = l
    'je colore la cellule sélectionnée
    frmMain.MSFlexGrid1.CellBackColor = &HFF&
    'j'ajoute 1 jour à d et je continue
    C = C + 1
    If C <= f Then GoTo boucle
    End Sub
    si quelqu'un peu me dire comment trouver les N° de ligne et de colonne, je pourrais enfin avancer et compliquer un peu plus mon code de d'amateur

    merci d'avence

    cordialement

    didier

  2. #2
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    J'ai du attaqué quelque chose d'impossible car je vois que les réponses ne sont pas au rendez-vous. J'ai gratter toute l’après midi pour essayer de trouver le N° de colonne et de ligne sans aucun résultat.
    application.match( d , frmMain.MSFlexGrid2.col) ne fonctionne pas et c'est pareil avec find
    J'en arrive même à penser que find et match ne fonctionnent pas en vb6

    enfin ... si quelqu'un à une idée, ça me tirerait une belle épine du pied

    merci

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 187
    Points
    17 187
    Par défaut
    Salut

    Le principe pour lire chaque cellule dans un FlexGrid
    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
    Dim LaLigne As Integer, LaColonne As Integer
    Dim LaDateRechercher As Date
    Dim T As Integer, U As Integer
     
    LaDateRechercher = #11/12/2012#
    LaLigne = -1
     
    For T = 0 To MSFlexGrid1.Rows - 1
        For U = 0 To MSFlexGrid1.Cols - 1
            If MSFlexGrid1.TextMatrix(T, U) = CStr(LaDateRechercher) Then
                LaLigne = T: LaColonne = U: Exit For
            End If
        Next U
        If LaLigne <> -1 Then Exit For
    Next T
    If LaLigne <> -1 Then
        MsgBox "Ligne trouvée pour cette date: " & LaLigne & vbNewLine & "En colonne : " & LaColonne
        Else
        MsgBox "La date n'a pas été trouvée"
    End If
    TextMatrix(Ligne,Colonne)permet de récupérer/modfier le texte contenu de cette cellule.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    merci pour cette réponse claire et précise que j'ai été bien incapable de trouver tout seul.
    Dés demain je vais appliquer cette méthode

    encore merci

    bonne soirée

  5. #5
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    bonjour à tous,

    voici le code que j'ai adapté :

    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
    Public Sub adresse()
     
    Dim LaLigne As Integer, LaColonne As Integer, C As Integer
    Dim LaDateRechercher As Date
    Dim U As Integer
     
    LaDateRechercher = Me.Text1.Text
    LaLigne = -1
     
        For U = 0 To frmMain.MSFlexGrid2.Cols - 1
            If frmMain.MSFlexGrid1.TextMatrix(U) = CStr(LaDateRechercher) Then
            LaColonne = U: Exit For
            End If
        Next U
     
    If LaColonne <> -1 Then
        C = LaColonne
        Else
        MsgBox "La date n'a pas été trouvée"
     
    End If
     
     
    End Sub
    il me permet bien de trouver le N° de colonne sur le Flexgrid2 ou sont inscrites les dates, mais je dois trouver le N° de ligne sur le Flexgrid1. Là pas de date, je dois simplement trouver la dernière ligne renseignée ; avec excel je ferais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ligne = Range("A36").End(xlUp).Row
    Est-il possible de connaitre l'adresse de la dernière cellule modifier ou saisie ? bien sur en ne sachant pas ce que l'on a écrit !

    j'ai pensé à ça mais il doit me manquer des éléments
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    For i = 1 To frmMain.MSFlexGrid1.Rows - 1
     if TextMatrix(Ligne,3) = "" then
    Ligne = Ligne - 1 : exit for
     
    Ligne = Ligne + 1
    next i
    merci pour votre aide

    cordialement

  6. #6
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    voilà ou j'en suis avec le 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
     
    Public Sub adresse()
     
    Dim Ligne As Integer, LaColonne As Integer, C As Integer
    Dim LaDateRechercher As Date
    Dim T As Integer, U As Integer, i As Integer
     'recherche de la colonne à partir de la date
    LaDateRechercher = Format$((Me.Text1.Text), "dd/mm/yy")
    LaLigne = -1
     
        For U = 0 To frmMain.MSFlexGrid2.Cols - 1
            If frmMain.MSFlexGrid1.TextMatrix(0, U) = CStr(LaDateRechercher) Then
            LaColonne = U: Exit For
            End If
        Next U
     
    If LaColonne <> -1 Then
        C = LaColonne
        MsgBox "La colonne est :  " & C
        Else
        MsgBox "La date n'a pas été trouvée"
    End If
     
    'recherche de la ligne
    For i = 1 To frmMain.MSFlexGrid1.Rows - 1
    If frmMain.MSFlexGrid1.TextMatrix(Ligne, 0) = "" Then
    Ligne = Ligne - 1: Exit For
    End If
    Ligne = Ligne + 1
    Next i
     
    If Ligne <> -1 Then
        MsgBox "La Ligne est :  " & Ligne
        Else
        MsgBox "La Ligne n'a pas été trouvée"
    End If
     
     
    End Sub
    hélas je ne trouve ni la ligne ni la colonne
    ligne = 0
    colonne = 0

    Comment faire ?

    merci pour votre aide

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2012
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 317
    Points : 101
    Points
    101
    Par défaut
    après beaucoup de tâtonnement, j'y suis enfin parvenu

    voici le code si cela peu servir :

    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
     
    Public Sub adresse()
     
    Dim Ligne As Integer, LaColonne As Integer, C As Integer
    Dim LaDateRechercher As Date
    Dim T As Integer, U As Integer, i As Integer
     'recherche de la colonne à partir de la date
    LaDateRechercher = Format$((Me.Text1.Text), "dd/mm/yy")
    LaLigne = -1
     
        For U = 4 To frmMain.MSFlexGrid2.Cols - 1
            If frmMain.MSFlexGrid2.TextMatrix(0, U) = CDate(LaDateRechercher) Then
            LaColonne = U: Exit For
            End If
        Next U
     
    If LaColonne > 0 Then
        C = LaColonne
        MsgBox "La colonne est :  " & C
        Else
        MsgBox "La date n'a pas été trouvée"
    End If
     
    'recherche de la ligne
    For i = 1 To frmMain.MSFlexGrid1.Rows - 1
    If frmMain.MSFlexGrid1.TextMatrix(Ligne, 0) = "" Then
    Ligne = Ligne - 1: Exit For
    End If
    Ligne = Ligne + 1
    Next i
     
    If Ligne > 0 Then
        MsgBox "La Ligne est :  " & Ligne
        Else
        MsgBox "La Ligne n'a pas été trouvée"
    End If
     
     
    End Sub
    encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/05/2015, 18h18
  2. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  3. [XL-2007] [Excel 2007] Coordonnées d'une cellule via une liste déroulante
    Par macErmite dans le forum Excel
    Réponses: 1
    Dernier message: 06/10/2014, 09h42
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 8
    Dernier message: 07/03/2009, 14h02

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