probleme avec les erreurs

  • Initiateur de la discussion Initiateur de la discussion nsqualli
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nsqualli

Guest
bonjour,

j'ai la tache d'automatiser des procedures avec des macro excel, et je n'y ai jamais touché avant 🙂 alors SVP aidez moi:

bon sur cette macro, je dois faire un teste sur deux cellules de la meme ligne, et si le teste est vrai je dois passer a un autre teste , le probleme c'est que le teste se fait sur la premiere cellule mais pas la deuxieme, et j'ai l'erreur d'execution '91': variable objet ou variable de bloc with non definie.

voila le code:

Code:
Option Explicit
Option Compare Text
 
Sub renseigner2()
    Dim Cel As Range
    Dim var As Range
    Const DistF2T As Long = 14      'nombre de décalages pour passer de F à T
    Const DistF2AG As Long = 27       'nombre de décalages pour passer de F à AG
    Const DistF2B As Long = -4      'nombre de décalages pour passer de F à B
    
              '---------------boucle pour tester si devis de développement doit etre renseigner ou non-----------------
   
    For Each Cel In Range("F1").EntireColumn.Cells
        'Si la valeur de la Cel est EVO
        var = Range("AG1").EntireColumn.Cells.Value
        If Cel.Value = "Evo" And var = "" Then
            'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T
            'Select Case Cel.Offset(0, DistF2T).Value
                'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                'Case "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                    'il n'y a rien à faire
                'sinon
                'Case Else
                    'colorer la Cel correspondante dans la colonne B
                    Cel.Offset(0, DistF2B).Font.Color = vbRed
            'End Select
        'si la Cel de la colonne F n'équivaut pas EVO
        Else
            'il n'y a rien à faire non plus
        End If
    Next
End Sub
 
Re : probleme avec les erreurs

Bonjour,
Code:
        var = Range("AG1").[COLOR="Red"]EntireColumn.Cells.[/COLOR]Value
        If Cel.Value = "Evo" And [COLOR="Red"]var = ""[/COLOR] Then
😕 s'agirait-il de tester que la colonne AG est vide ?
Autant commencer par ce test et quitter la procédure si c'est le cas
Sinon, si c'est juste la cellule AG de de la ligne
Code:
Option Explicit
Option Compare Text
 
Sub renseigner2()
    Dim Cel As Range
    Dim var As Range
    Const DistF2T As Long = 14      'nombre de décalages pour passer de F à T
    Const DistF2AG As Long = 27       'nombre de décalages pour passer de F à AG
    Const DistF2B As Long = -4      'nombre de décalages pour passer de F à B
    
              '---------------boucle pour tester si devis de développement doit etre renseigner ou non-----------------
   
    For Each Cel In Range("F1:F" & Range("F65000").End(xlUp).Row)
        'Si la valeur de la Cel est EVO
        'var = Range("AG1").EntireColumn.Cells.Value
        If Cel.Value = "Evo" And Cel.Offset(0, DistF2AG) = "" Then
        
            'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T
            Select Case Cel.Offset(0, DistF2T).Value
                'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                Case "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                    'il n'y a rien à faire
                'sinon
                'Case Else
                    'colorer la Cel correspondante dans la colonne B
                    Cel.Offset(0, DistF2B).Font.Color = vbRed
            'End Select
        'si la Cel de la colonne F n'équivaut pas EVO
        End Select
            'il n'y a rien à faire non plus
        End If
    Next
End Sub
A+
kjin
 
Re : probleme avec les erreurs

Bonjour nsqualli, kjin

"var" étant une variable de type range (Dim var As Range), lorsque tu l'initialise il y a lieu de faire précéder l'instruction par le mot "Set" :

Code:
Set var = Range("AG1")

par contre si tu veux stocker la valeur de la cellule, il faut déclarer ta variable en "string" pour stocker du texte (A noter, tu peux également utiliser des types de données stockant des nombres "long", "integer" etc...) " :

Code:
Dim var As String
var = Range("AG1").Value

F1 sur le mot "Dim" te renverra dans l'aide pour plus d'info. Tu pourras également aller consulter dans l'aide le "Résumé des types de données"...

bonne journée
@+

Edition : bonjour Gael, t'avais pas vu...
 
Re : probleme avec les erreurs

Bonjour,

😕 s'agirait-il de tester que la colonne AG est vide ?
Autant commencer par ce test et quitter la procédure si c'est le cas
Sinon, si c'est juste la cellule AG de de la ligne
Code:
Option Explicit
Option Compare Text
 
Sub renseigner2()
    Dim Cel As Range
    Dim var As Range
    Const DistF2T As Long = 14      'nombre de décalages pour passer de F à T
    Const DistF2AG As Long = 27       'nombre de décalages pour passer de F à AG
    Const DistF2B As Long = -4      'nombre de décalages pour passer de F à B
    
              '---------------boucle pour tester si devis de développement doit etre renseigner ou non-----------------
   
    For Each Cel In Range("F1:F" & Range("F65000").End(xlUp).Row)
        'Si la valeur de la Cel est EVO
        'var = Range("AG1").EntireColumn.Cells.Value
        If Cel.Value = "Evo" And Cel.Offset(0, DistF2AG) = "" Then
        
            'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T
            Select Case Cel.Offset(0, DistF2T).Value
                'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                Case "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                    'il n'y a rien à faire
                'sinon
                'Case Else
                    'colorer la Cel correspondante dans la colonne B
                    Cel.Offset(0, DistF2B).Font.Color = vbRed
            'End Select
        'si la Cel de la colonne F n'équivaut pas EVO
        End Select
            'il n'y a rien à faire non plus
        End If
    Next
End Sub
A+
kjin

Merci beaucoup Kjin, ça marche tres bien et c'est vraiment ce que je voulais, bon je vais laisser le code final, si quelqu'un veut s'en servir:

Code:
Option Explicit
Option Compare Text
 
Sub renseigner2()
    Dim Cel As Range
    Dim var As Range
    Const DistF2T As Long = 14      'nombre de décalages pour passer de F à T
    Const DistF2AG As Long = 27       'nombre de décalages pour passer de F à AG
    Const DistF2B As Long = -4      'nombre de décalages pour passer de F à B
    
              '---------------boucle pour tester si devis de développement doit etre renseigner ou non-----------------
   
    For Each Cel In Range("F1:F" & Range("F65000").End(xlUp).Row)

        'Si la valeur de la Cel est EVO la cellule du devis est vide
        If Cel.Value = "Evo" And Cel.Offset(0, DistF2AG) = "" Then
            'Alors, selon le cas de la valeur de la cel de la même ligne, colonne T
            Select Case Cel.Offset(0, DistF2T).Value
                'si l'on a l'une des valeurs suivantes : "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                Case "CHK", "CHK-OK", "ANA", "ANU", "ATT"
                    'il n'y a rien à faire
                'sinon
                Case Else
                    'colorer la Cel correspondante dans la colonne B
                    Cel.Offset(0, DistF2B).Font.Color = vbRed
            End Select
        'si la Cel de la colonne F n'équivaut pas EVO
        Else
            'il n'y a rien à faire non plus
        End If
    Next
End Sub

est ce que tu peux juste m'expliquer ce que fait la ligne suivante :

Code:
For Each Cel In Range("F1:F" & Range("F65000").End(xlUp).Row)

Merci une autre fois🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

G
  • Question Question
Réponses
1
Affichages
796
Grouchet
G
S
Réponses
3
Affichages
995
D
Réponses
1
Affichages
991
D
N
Réponses
2
Affichages
830
N
Y
Réponses
13
Affichages
23 K
Yvouille
Y
Retour