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 :

adaptation d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 67
    Par défaut adaptation d'une macro
    Bonjour à tous

    je souhaiterai un coup de main car j'aimerai adapter une macro qui teste une cellule et selon le résultat agit, en je teste toutes les cellules d'une colonne et j'agis
    Voici le code original:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
        'Lance le clignotement  à l'ouverture si la cellule B3 supérieure à 9
        If Val(Sheets(1).Range("B3").Value) > 9 Then Clign
    End Sub
    J' ai donc essayé ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
    Dim i As Long, shut As Worksheet
    Set shut = Worksheets("Vordispoliste")
    With shut
    For i = Cells(65000, 28).End(xlUp).Row To 1 Step -1                      
            If Val(shut.Range(i, 28).Value) > 333 Then Clign
       End With
        Next
        Set shut = Nothing    
    End Sub
    Hélas elle ne marche pas m'indiquant qu'il y a end with sans with ou que la methode range a echouée

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Tu as imbriqué un bloc With et un bloc For...

    Inverse tes lignes 7 et 8.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre très actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2010
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 149
    Par défaut
    Il me semble que tu as inversé deux lignes. De plus, il faut un nom de variable apres le next

    Tente avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
    Dim i As Long, shut As Worksheet
    Set shut = Worksheets("Vordispoliste")
    With shut
      For i = Cells(65000, 28).End(xlUp).Row To 1 Step -1                      
            If Val(shut.Range(i, 28).Value) > 333 Then Clign
      Next i
    end with
        Set shut = Nothing    
    End Sub

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 67
    Par défaut
    Merci pour votre aide

    J'ai rectifie le code mais il bute maintenant sur cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Val(shut.Range(i, 28).Value) > 333
    en me signifiant que la methode range de l'objet worksheet a échoué
    Est ce qu'il ne faudrait pas inclure une variable lastig pour que la selection s'arrete à la derniere ligne?

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il me semble que tu as inversé deux lignes. De plus, il faut un nom de variable apres le next
    Le nom de la variable après un Next, n'est pas obligatoire.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut Ajout d'une rectification
    Bonjour,
    Dans ta ligne If Val(shut.Range(i, 28).Value) > 333 Then Clign, il manque l'attribution d'une valeur à Clign et comme le dit justement Kesimon63 c'est cells et pas range
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = Cells(65000, 28).End(xlUp).Row To 1 Step -1                      
            If Val(shut.Range(i, 28).Value) > 333 Then Clign
      Next i
    Rectification : Je suppose que cLign est le nom d'une procédure. Alors évidemment c'est correct
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je suppose que Clign est une procédure (sans paramètres)

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien méthodes métrologie sur site
    Inscrit en
    Novembre 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien méthodes métrologie sur site
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2010
    Messages : 107
    Par défaut
    Ce n'est pas Range qu'il faut utiliser mais Cells
    De plus tu n'a pas de End if

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    Dim i As Long
    Dim Shut As Worksheet
     
    Set Shut = Worksheets("Vordispoliste")
    With Shut
        For i = .Cells(.Rows.Count, 28).End(xlUp).Row To 1 Step -1
            If Val(.Range("AB" & i).Value) > 333 Then Clign
        Next i
    End With
    Set Shut = Nothing
    End Sub
    @kesimon63: End If n'est pas nécessaire vu que l'instruction est sur une seule ligne

Discussions similaires

  1. [XL-2013] Adaptation d'une macro à base de variable Tableau
    Par ldescham dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/04/2014, 13h28
  2. [XL-2000] Adapter une macro (suppression de ligne si = 0)
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 21h53
  3. Adaptation d'une macro
    Par mobiclick dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/12/2009, 20h29
  4. Adaptation d'une macro
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/12/2009, 17h31
  5. Adaptation d'une macro
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/12/2009, 17h25

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