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 :

Récuperer la valeur d'une cellule modifié par le format de la cellule [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 8
    Par défaut Récuperer la valeur d'une cellule modifié par le format de la cellule
    bonjour,

    je suis étudiants et je suis débutant en VBA sur excel ( j'ai eu que 6 heures de cours c'est pour dire).

    je vous expose ma situation actuelle:

    je dois faire un fichier qui créer un calendrier qui va regrouper plusieurs plage (plage de stage/ alternance) de différentes filières, donc j'ai commencé a coder pour réussir à fabriquer un calendrier.

    Mon calendrier affiche:
    - le mois sélectionné ,
    - la bonne année ,
    - vérifie si c'est une année bissextile,
    - il insère le nom des différentes filières en colonne qui va chercher une feuille qui va me servir de """base de donnée"""

    j'aimerai les cases pour les samedi et les dimanche se colorie en une couleur (pour l'instant dans mon code a la place d'une couleur il affiche "X")

    mais il n'arrive pas a lire "sam" ou "dim" car j'ai changé le format de ma cellule pour que 01/01/2015 = lun / mar/ mer, ect...

    c'est la partie Sub samedidimanche qui marche pas.

    je n'arrive pas a trouver la solution après plusieur essaie, donc je me tourne vers vous pour trouvé une réponse a ce problème.

    je vous remercie d'avance.

    test.xlsm

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par celiria Voir le message
    mais il n'arrive pas a lire "sam" ou "dim" car j'ai changé le format de ma cellule pour que 01/01/2015 = lun / mar/ mer, ect...
    Tu peux utiliser la propriété Text de la cellule.
    https://msdn.microsoft.com/fr-fr/lib.../ff840217.aspx

    Mais il serait bien plus propre de passer par la fonction Weekday().
    https://msdn.microsoft.com/en-us/VBA...ekday-function

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 8
    Par défaut
    bonjour, merci pour ta réponse mais je ne comprend pas comment integrer tes solutions que tu m'as proposé .

    pourrais-tu m'aiguiez un peu stp ?

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
     
     
    Dim nomfeuille As String   'sub ajoutfeuille
    Dim mois As String         'sub ajoutfeuille ET sub calendrier ==> jours
    Dim annee As String        'sub ajoutfeuille ET sub calendrier ==> Bissextile ==> jours
     
    Dim bissextile As Boolean  'sub calendrier ==> Bissextile ==> jours
     
    Dim nbrjour As Integer     'sub calendrier ==> jours
    Dim cmois As Integer       'sub calendrier ==> jours
    Dim i As Integer           'sub calendrier ==> jours
    Dim datef As String        'sub calendrier ==> jours
     
     
    Dim w As Integer
     
    Dim x As String
    Dim valeur
     
    Dim y As Integer
     
     
    Sub test()
     
    Call ajoutfeuille
    Call calendrier
    Call nomcolonne
    Call miseenforme
    Call samedidimanche
     
    End Sub
     
    Sub ajoutfeuille()
     
    Sheets("DEBUT").Activate
     
    mois = Cells(5, 8)
    annee = Cells(7, 8)
    nomfeuille = mois & " " & annee
     
    Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = nomfeuille
     
    End Sub
     
    Sub calendrier()
     
    '============ Bissextile =========='
     
    bissextile = ((annee Mod 400 = 0) Or (annee Mod 4 = 0 And annee Mod 100 <> 0))
     
    '========== jour =========='
     
    If mois = "Février" Then
        If bissextile = True Then
        nbrjour = 29
        Else
        nbrjour = 28
        End If
    Else
        Select Case mois
        Case Is = "Janvier", "Mars", "Mai", "Juillet", "Aout", "Octobre", "Decembre"
            nbrjour = 31
        Case Else
            nbrjour = 30
        End Select
    End If
     
    'janvier = 31
    'fevrier = 29 ou 28
    'mars = 31
    'avril = 30
    'mai = 31
    'juin = 30
    'juillet = 31
    'aout = 31
    'septembre = 30
    'octobre = 31
    'novembre = 30
    'decembre = 31
     
    Select Case mois
        Case Is = "Janvier"
            cmois = 1
        Case Is = "Février"
            cmois = 2
        Case Is = "Mars"
            cmois = 3
        Case Is = "Avril"
            cmois = 4
        Case Is = "Mai"
            cmois = 5
        Case Is = "Juin"
            cmois = 6
        Case Is = "Juillet"
            cmois = 7
        Case Is = "Aout"
            cmois = 8
        Case Is = "Septembre"
            cmois = 9
        Case Is = "Octobre"
            cmois = 10
        Case Is = "Novembre"
            cmois = 11
        Case Is = "Decembre"
            cmois = 12
        End Select
     
    i = 0
     
    While i <> nbrjour
        i = i + 1
     
        Cells(3, i + 2) = i
     
        datef = cmois & "/" & Cells(3, i + 2) & "/" & annee
     
        Cells(4, 2 + i) = datef
     
        Cells(4, 2 + i).NumberFormat = "ddd"
    Wend
     
    End Sub
     
    Sub nomcolonne()
     
    '========== liste des differentes filliere/année =========='
     
        Sheets("DONNEES").Select
        Range("A:A").SpecialCells(xlCellTypeConstants, 23).Copy
     
        Sheets(nomfeuille).Select
        Range("B5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Application.CutCopyMode = False
     
    End Sub
     
    Sub samedidimanche()
     
    w = 0 'changement de filiere
     
    While IsEmpty(Cells(5 + w, 2)) = False
     
        For y = 0 To nbrjour
     
        x = Cells(4 + w, 3 + y).NumberFormat = "ddd"
     
         If x = "sam" Then
            Cells(5 + w, 3 + y) = "X" 'mettre couleur
            End If
     
     
         MsgBox ("jour " & x)
         MsgBox ("resultat " & Cells(5 + w, 3 + y))
     
         Next
     
    w = w + 1
    Wend
     
     
    End Sub

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu n'as pas cherché bien longtemps...

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 8
    Par défaut
    si j'ai trouvé la comment l'implanté dans mon code quelque minutes après avoir envoyer le message et je te remercie (j'ai utilisé le .text)

    maintenant je suis bloqué avec sa


    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
    Dim w As Integer
    Dim y As Integer
     
    Sub zzzzzzz()
     
    w = 0 'changement de filiere
     
    MsgBox (31)
     
    While IsEmpty(Cells(5 + w, 2)) = False
     
        For y = 1 To 31
     
            If Cells(4 + w, 2 + y) = "Sam" Then
            Cells(5 + w, 2 + y) = "X"
    'mettre couleur
            End If
     
            If Cells(4 + w, 2 + y) = "Dim" Then
            Cells(5 + w, 2 + y) = "X"
    'mettre couleur
            End If
     
        Next
     
    w = w + 1
    y = 1
    Wend
     
     
    End Sub


    le While refuse de boucler, ca le FOR et les 2 IF marche .
    j'ai essayé de faire marché le While en enlevant le FOR et les 2 IF et la il marche.
    donc je cherche mais je commence a plus avoir d'idée

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par celiria Voir le message
    le While refuse de boucler
    Sans doute parce que la condition que tu as inscrite n'est pas bonne.

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

Discussions similaires

  1. recuperer la valeur d'une cellule ayant le focus
    Par stefano dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/03/2006, 20h07
  2. [PHP-JS] recuperer valeur d'une liste generé par javascript
    Par crevettes59000 dans le forum Langage
    Réponses: 2
    Dernier message: 05/03/2006, 09h11
  3. [SWING][JTable] recuperer la valeur d'une cellule
    Par Psykorel dans le forum Composants
    Réponses: 1
    Dernier message: 05/01/2006, 20h53
  4. [VB.NET] Recuperer la valeur d'une cellule d'un DataTable
    Par graphicsxp dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/03/2005, 10h59
  5. recuperer la valeur d une cellule
    Par Invité(e) dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2005, 18h05

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