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 :

probleme de condition [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut probleme de condition
    bonjour je m'explique
    je copie et colle des données de la colonne B a J
    j'aimerais que si je dépasse la colonne j cela m'écrive un message d'erreur dans la colonne K
    et que cela passe à l'étape suivant sachant que ma colonne S calcule le nombre de pointage enregistré =NBVAL(B39:I39)
    je voudrais utiliser dans ma condition que si l'a colonne s indique supérieur a 8 on écrit dans k le message
    bien sûr le tout en vba

  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 philh2008 Voir le message
    je copie et colle des données de la colonne B a J
    Comment fais-tu ?

    et que cela passe à l'étape suivant
    C'est quoi l'étape suivante ?

    sachant que ma colonne S calcule le nombre de pointage enregistré =NBVAL(B39:I39)
    Quel est le rapport avec la copie des données ?

    je voudrais utiliser dans ma condition que si l'a colonne s indique supérieur a 8 on écrit dans k le message
    Tu ne dis pas comment tu définis la ligne que tu testes dans la colonne S ni celle dans laquelle tu veux afficher le message dans la colonne K.
    Je vais supposé que c'est la même ligne et que son numéro se trouve dans une variable MaLigne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(MaLigne,19)>8 then Cells(MaLigne,11).Value="Mon message"

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut
    voila le code complet
    tu comprendras mieux je pense


    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
    Sub ouverture_classeur()
    Application.ScreenUpdating = False
    Dim Date1 As Date
    Dim date2 As Date
    Dim x As Integer
     
    '**************ON OUVRE LE CLASSEUR*********
     
    Workbooks.Open ("C:\VBAPointeuse\Salariés\Listesalariés.xlsm")
     
    Sheets("Listesalariés").Activate
    Derligne = Range("H1").End(xlDown).Row
    Derligne1 = Range("D1").End(xlDown).Row
     
    For I = 1 To Derligne1
    For j = 1 To Derligne
     
    '*********SI DANS LA COLONNE D ET H IL Y A UNE CORESPONDANCE************
     
    If Range("H" & j).Value = Range("D" & I).Value Then
     
    '***************ON OUVRE LE CLASSEUR CORESPONDANT********************
     
    Workbooks.Open ("c:\VBAPointeuse" & "\" & "Pointage" & "\" & Range("D" & I).Offset(0, -2).Value & Range("D" & I).Offset(0, -1).Value & Range("D" & I).Offset(0, -3).Value & (".xlsx"))
    '*************ON ACTIVE LE CLASSEUR PRECEDENT*********
     
       Workbooks("Listesalariés.xlsm").Activate
     
     
    ' **********ON SELECTIONNE ET COPIE LA DEUXIEME CELLULE VERS LA GAUCHE******
     
        Date1 = Range("e" & j).Value
        Heure = Range("F" & j).Value
        Cells(j, 6).Copy
     
     
    '**********ON ACTIVE LE CLASSEUR CORESPONDANT OUVERT AVANT*******
     
     
       Windows(Range("D" & I).Offset(0, -2).Value & Range("D" & I).Offset(0, -1).Value & Range("D" & I).Offset(0, -3).Value & (".xlsx")).Activate
     
       '**********JE CALCULE LE NOMBRESE DE JOURS SUIVANAT LA DATE TROUVER AVANT********
    x = DateDiff("d", "01/01/2015", Date1)
     
    '*************JE SELECTIONNE LE PREMIER JOUR DE L'ANNEE
     
    Range("A6").Select
     
    '*****************JE LUI DIT DE SELECTIONNER LA CELLULE CORESPONDANT A LA DATE TROUVER AVANT**********
     
              ActiveCell.Offset(x, 0).Select
    MALigne = ActiveCell.Offset(x, 0)
     
            ii = 1
     
               Do While Not (IsEmpty(ActiveCell))
             ii = ii + 1
               Selection.Offset(0, 1).Select
                If Cells(MALigne, 19) > 8 Then
       Cells(MALigne, 11).Value = "Erreur nombre pointage"
       End If
               Loop
      '****SI J4AIS UNE VALEUR A COLLER QUI DEPASSE
     
             On Error Resume Next
                        ActiveSheet.Paste
                       Application.CutCopyMode = False
     
     
       ActiveWorkbook.Save
    'ActiveWorkbook.Close
     
          Windows("Listesalariés.xlsm").Activate
     
    End If
     
          Next j
     
          Next I
     
     
    End Sub

  4. #4
    Membre confirmé
    Femme Profil pro
    controleur de gestion
    Inscrit en
    Novembre 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : controleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 53
    Par défaut
    Hello

    Mets ton code entre les balises prevu a cette effet (signe # dans l'editeur de message)
    tu ne reponds pas non plus aux autres questions de Menhir
    enfinm je ne comprends pas ce que tu entends par
    j'aimerais que si je dépasse la colonne j cela m'écrive un message d'erreur dans la colonne K

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 12
    Par défaut
    bonjour
    merci pour vos réponse
    et désolé pour l'envois du code
    alors je m'explique je vais essayer de mieux dire
    donc j'ais un classeur liste salariés la dessus j'ais des heures de pointage de chaque salarié
    je cherche toutes les heures de chacun que je recopie dans son classeur tous les jours
    pour ca je calcule le nombre de jour entre la date de pointage et le 01/01/2015
    une fois le nombre trouver je sélectionne la ligne correspondante dans le classeur de la personne
    je Colle tous ses pointage dans les colonne de B a I
    normalement je n'ais que 4 pointage par jour
    mais si j'ais plus de 8 pointage je voudrais qu'à ce moment là, cela me marque "nombre de pointage supérieur à 8" dans la colonne k sur la même ligne
    pour cela dans ma colonne S j'ais une formule qui a chaque pointage collé me calcule le nombre de pointage
    arrivé a 8
    je souhaiterais que dans mon code je regarde la colonne S avant de coller, pour voir le nombre de pointage ,si j'arrive a 8 et que j'aurais encore un pointage a coller
    ce la me marque l'erreur dans la colonne K et si erreur il y a je passe a l'étape suivante qui est de chercher le prochain salarié
    mon code fonctionne jusqu'au moment ou je dois regarder la colonne S là il ne le fait pas il continu a écrire dans le colonnes vide il ne prend pas en
    compte la colonne S
    je sais pas comment faire je mets la parti de mon code qui bloque pour que vous puissiez voir
    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
       '**********JE CALCULE LE NOMBRESE DE JOURS SUIVANAT LA DATE TROUVER AVANT********
    x = DateDiff("d", "01/01/2015", Date1)
     
    '*************JE SELECTIONNE LE PREMIER JOUR DE L'ANNEE
     
    Range("A6").Select
     
    '*****************JE LUI DIT DE SELECTIONNER LA CELLULE CORESPONDANT A LA DATE TROUVER AVANT**********
     
              ActiveCell.Offset(x, 0).Select
     
            ii = 1
     
               Do While Not (IsEmpty(ActiveCell))
             ii = ii + 1
     
               Selection.Offset(0, 1).Select
       If ActiveCell > Cells("S6" + x) Then
       Range("K" & j).Value = "superieur à 8 pointage"
       End If
               Loop
      '****SI J4AIS UNE VALEUR A COLLER QUI DEPASSE
     
                        ActiveSheet.Paste
                       Application.CutCopyMode = False
     
       ActiveWorkbook.Save
    'ActiveWorkbook.Close
     
          Windows("Listesalariés.xlsm").Activate
     
    End If
     
          Next j
     
          Next I

  6. #6
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut


    Bonjour,

    A défaut de savoir ou tu bloque, c'est à dire ce qui ne marche pas (erreur d’exécution, code qui ne fait pas ce que tu veux, absence de code), on aimerais avoir une image de la feuille, avec quelques explications !

    Sinon, quelques remarques en vrac :

    L'indentation en VBA, c'est pour rendre le code plus lisible, pas pour exprimer sa créativité !
    La méthode "Select" est à éviter, ça ralentit le code, ça consomme des ressources, et c'est pas hyper propre.
    Le retour chariot a une vrai signification quand on écris un truc, tu remarqueras que les écrivains de vont pas à la ligne au milieu de leurs phrases (question de lisibilité, parait-il)

    En attente de plus d'explication

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/05/2006, 09h13
  2. [AS] Probleme de condition
    Par Treuze dans le forum Flash
    Réponses: 8
    Dernier message: 25/03/2006, 15h27
  3. probleme de condition et de boucle
    Par avantoux dans le forum ASP
    Réponses: 5
    Dernier message: 23/03/2006, 08h59
  4. Probleme de conditions
    Par guy2004 dans le forum Langage
    Réponses: 11
    Dernier message: 05/11/2005, 14h54
  5. probleme gestion condition switch - case
    Par DarkMax dans le forum Langage
    Réponses: 5
    Dernier message: 07/09/2005, 14h25

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