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 :

Debutante code vba


Sujet :

Macros et VBA Excel

  1. #21
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Oui ma boucle est en attente j'essaye d'abord de tester sur une ligne.
    La mise en forme conditionnelle c'est faire la fonction? si c'est ce la cas oui j'ai essayé mais je n'arrive pas a m'exprimer.

    SI j'ai fait le vba c'est parce qu'en suite il y'a le copier-coller .

    Citation Envoyé par Trystan441 Voir le message
    Si tu souhaites traiter toutes les lignes de ton tableau alors il va falloir que tu passes par une boucle !

    Mais une question avant tout : As-tu essayé de passer par une Mise En Forme Conditionnelle plutôt que par VBA ?

  2. #22
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Pour la Mise en Forme Conditionnelle

    https://support.office.com/fr-fr/art...b-f1951ff89d7f

    Par contre, tu devrais réellement passer du temps à te documenter sur Excel et VBA avant d'aller plus loin. Tu gagneras du temps.

  3. #23
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Je viens de regarder pour la mise en forme mais je ne pense pas que c'est ce que je cherche.
    Ici en 1er j'avais fait ma condition pour :
    Si "La date du jour" > = "A ma colonne D, ma date Limite" ET "Date Limite" n'est pas colorié alors je fais ma condition.
    MAis je ne trouve pas comment lui dire ce n'est pas colorié qu'elle valeur.


    Citation Envoyé par Trystan441 Voir le message
    Pour la Mise en Forme Conditionnelle

    https://support.office.com/fr-fr/art...b-f1951ff89d7f

    Par contre, tu devrais réellement passer du temps à te documenter sur Excel et VBA avant d'aller plus loin. Tu gagneras du temps.

  4. #24
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Re bonsoir,

    Je reviens ici car je viens de faire un code, qui n'est peut etre pas claire mais que je comprend.
    Donc j'ai fait en sorte que si La date du jour >= La date limite (colonne D) Alors il me copie et colle la ligne dans l'autre feuille
    sauf qu'il ne fait pas ce que je lui dit, bien evidemment, il me recopie les 3 premières lignes et saute la ligne 9. Qui peut me dire mon erreur?
    Merci

    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
    'Sub est le debut de la procedure
    Sub Rappel()
    'Dim est une variable
    Dim Nom, numero_ligne, DateEnvoi, NomLot, Total, Rappel
    Dim Onglet As Worksheet
    Dim DateJour, DateLimite
    Dim Cible, Cpt
     
    'DateJour = A la date du systeme
    DateJour = Date
    Couleur = ActiveCell.Font.Color
    nb_lignes = WorksheetFunction.CountA(Range("A:A")) - 2 'Fonction NBVAL
    Cible = "Feuil1"
    Cpt = 6
    Nom = Range("A1").Value
     
    'For Each Onglet In Worksheets
    While Cpt <= 12
     
        DateLimite = Range("D" & Cpt).Value
        numero_ligne = Range("F5") + Cpt
        DateEnvoi = Format(Cells(numero_ligne, 1), "dd/mm")
        NomLot = Cells(numero_ligne, 2)
        Total = Cells(numero_ligne, 3)
        Rappel = Format(Cells(numero_ligne, 4), "dd/mm")
     
        If DateJour >= DateLimite Then
     
            Range("A1").Copy Worksheets(Cible).Range("A" & Cpt)
            Cells(numero_ligne, 1).Copy Worksheets(Cible).Range("B" & Cpt)
            Cells(numero_ligne, 2).Copy Worksheets(Cible).Range("C" & Cpt)
            Cells(numero_ligne, 3).Copy Worksheets(Cible).Range("D" & Cpt)
            Cells(numero_ligne, 4).Copy Worksheets(Cible).Range("E" & Cpt)
     
            Cpt = Cpt + 1
        Else
            Cpt = Cpt + 1
        End If
    Wend
    'Next
    End Sub
    Images attachées Images attachées  

  5. #25
    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,

    Comme on te l'a fortement conseillé dans un post plus haut, type tes variables mais avant tout, fais en sorte qu'elles soient déclarées de façon explicite en cochant la case "Déclaration des variables obligatoire" dans le menu "Outils" --> "Option..." onglet "Éditeur". A l'ouverture des classeurs par la suite, il sera inscrit "Option Explicit" en tête des tous les modules quel que soit leur type et ceci pour t'éviter de t'arracher les cheveux dans bien des cas lors de débogages !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim DateJour As Date
    Dim DateLimite As Date
    Dim DateEnvoi As Date
    Dim Nom As String
    Dim NomLot As String
    Dim Rappel As String
    Dim Cible As String
    Dim Total As Double
    Dim Cpt As Long
    Dim Couleur As Long
    Dim nb_lignes As Long
    Dim numero_ligne As Long
    Tu affectes des valeurs à des variables dans ta boucle mais tu ne les utilises pas, pourquoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DateLimite = Range("D" & Cpt).Value
    numero_ligne = Range("F5") + Cpt
    DateEnvoi = Format(Cells(numero_ligne, 1), "dd/mm")
    NomLot = Cells(numero_ligne, 2)
    Total = Cells(numero_ligne, 3)
    Rappel = Format(Cells(numero_ligne, 4), "dd/mm")

  6. #26
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Bonjour,
    J'ai voulu les utiliser mais je n'ai pas réussi, j'ai voulu faire
    Merci

    Citation Envoyé par Theze Voir le message
    Bonjour,
    Tu affectes des valeurs à des variables dans ta boucle mais tu ne les utilises pas, pourquoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DateLimite = Range("D" & Cpt).Value
    numero_ligne = Range("F5") + Cpt
    DateEnvoi = Format(Cells(numero_ligne, 1), "dd/mm")
    NomLot = Cells(numero_ligne, 2)
    Total = Cells(numero_ligne, 3)
    Rappel = Format(Cells(numero_ligne, 4), "dd/mm")

  7. #27
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Bonsoir,

    Comment dire si ma cellule est surligné? Je ne peux pas dire
    If couleur = True

    Merci

  8. #28
    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,

    Un petit test sur la cellule A1, en modifiant la couleur de fond tu auras des messages différents selon le cas :
    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
     
    Sub Test()
     
        Dim Couleur As Long
     
        'couleur rouge
        Couleur = RGB(255, 0, 0)
     
        'test sur cellule A1
        If Cells(1, 1).Interior.Color = Couleur Then
     
            MsgBox "Ok, c'est la bonne couleur !"
     
        ElseIf Cells(1, 1).Interior.Color <> 16777215 Then
     
            MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !"
     
        Else
            MsgBox "La cellule n'est pas colorée !"
     
        End If
     
    End Sub
    Si l'intérieur de A1 est rouge, le message sera "Ok, c'est la bonne couleur !", si A1 est colorée avec une autre couleur que rouge, le message sera "La cellule est colorée mais ce n'est pas la bonne couleur !" et si A1 ne contient aucune couleur, le message sera "La cellule n'est pas colorée !"
    Si tu veux savoir la valeur de la couleur (en Long) d'une cellule, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub QuelleCouleur()
        Debug.Print ActiveCell.Interior.Color
    End Sub
    le résultat sera inscrit dans la fenêtre d'exécution (Ctrl+G) ou tu peut le faire directement dans cette fenêtre en faisant précéder l'instruction d'un point d'interrogation :
    ?activecell.Interior.Color
    que tu valide par la touche Entrée !

  9. #29
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Merci, ici je ne sais pas qu'elle sera la couleur justement mais j'ai fait l'inverse si la case n'est pas colorié.

    Il ne me reste plus grand chose a testé, si tu sais m'aider.
    1) Dans mon tableau, en A1 j'ai utilisé une formule trouvé sur le net pour qu'il récupère le nom mis dans mon onglet, seulement quand je recopie dans l'autre feuille, ben il me fait la même chose et ne m'indique pas le nom copié. Comment garder le nom et pas la formule?

    2) Dans ma condition, quand il lit une ligne qui ne doit pas être recopié, dans ma feuille de récap il saute une ligne.

    J'espère que je me suis bien exprimé. Merci

  10. #30
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par Theze Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub Test()
        Dim Couleur As Long
        'couleur rouge
        Couleur = RGB(255, 0, 0)
        'test sur cellule A1
        If Cells(1, 1).Interior.Color = Couleur Then
            MsgBox "Ok, c'est la bonne couleur !"
        ElseIf Cells(1, 1).Interior.Color <> 16777215 Then
            MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !"
        Else
            MsgBox "La cellule n'est pas colorée !"
        End If
    End Sub
    Bonjour Theze,

    Color ne permet pas de détecter la différence entre une cellule colorée en blanc et une cellule non colorée, il faut utiliser ColorIndex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test()
        Dim Couleur As Long
        'couleur rouge
        Couleur = RGB(255, 0, 0)
        'test sur cellule A1
        If Cells(1, 1).Interior.Color = Couleur Then
            MsgBox "Ok, c'est la bonne couleur !"
        ElseIf Cells(1, 1).Interior.ColorIndex <> xlNone Then
            MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !"
        Else
            MsgBox "La cellule n'est pas colorée !"
        End If
    End Sub

  11. #31
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    Bonjour,

    Et comme j'ai fait moi ca va, ne sachant pas la couleur j'ai inversé et dit si ma couleur est différent de rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Couleur = Range("D" & Cpt).Interior.Color
     
        If DateJour >= DateLimite And Couleur = 16777215 Then



    Citation Envoyé par Patrice740 Voir le message
    Bonjour Theze,

    Color ne permet pas de détecter la différence entre une cellule colorée en blanc et une cellule non colorée, il faut utiliser ColorIndex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test()
        Dim Couleur As Long
        'couleur rouge
        Couleur = RGB(255, 0, 0)
        'test sur cellule A1
        If Cells(1, 1).Interior.Color = Couleur Then
            MsgBox "Ok, c'est la bonne couleur !"
        ElseIf Cells(1, 1).Interior.ColorIndex <> xlNone Then
            MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !"
        Else
            MsgBox "La cellule n'est pas colorée !"
        End If
    End Sub

  12. #32
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par ashpo4 Voir le message
    Bonjour,

    Et comme j'ai fait moi ca va, ne sachant pas la couleur j'ai inversé et dit si ma couleur est différent de rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Couleur = Range("D" & Cpt).Interior.Color
        If DateJour >= DateLimite And Couleur = 16777215 Then
    Ça c'est : si aucune couleur ou couleur blanche.
    Pour tester couleur différente de rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("D" & Cpt).Interior.ColorIndex <> xlNone then

  13. #33
    Membre averti
    Femme Profil pro
    autres
    Inscrit en
    Février 2019
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : autres

    Informations forums :
    Inscription : Février 2019
    Messages : 43
    Par défaut
    D'accord merci

Discussions similaires

  1. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15
  2. Réponses: 2
    Dernier message: 27/10/2005, 15h51
  3. Réponses: 4
    Dernier message: 13/10/2005, 14h44
  4. Réponses: 3
    Dernier message: 06/09/2005, 10h27
  5. Comment creer une procédure stockée à partir d'un code VBA?
    Par Alcor020980 dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 24/05/2005, 19h55

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