Problème de qualificateur

Dapounet

XLDnaute Nouveau
Bonjour à tous !
J'ai déjà créé un topic sur ce forum à propos d'un projet de gestion de garage automobile. J'ai plutôt bien avancé grâce aux aides apportées !
Mais là, j'ai un problème assez spécifique pour créer un nouveaux topic (je pense ^^" )

Mon code ressemble à ceci :
Code:
Sub TestResearch()

    Dim numAno As String
    Dim toto As String
    Dim lignef1 As Integer
    Dim colonnef1 As Integer
    Dim lignef2 As Integer
    Dim colonnef2 As Integer
    Dim Plage As Range

    lignef1 = 2
    colonnef1 = 8
    lignef2 = 3
    colonnef2 = 2

    numAno = Worksheets(7).Cells(lignef1, colonnef1).Value

   Set Plage = Worksheets(8).Range("B4:B65536").Find(What:=numAno, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, SearchOrder:=xlByRows, SearchDirection:=xlNext)

    If Not Plage Is Nothing Then
    ' On copie l'etat situe dans la feuille 4 sur la feuille 2
        toto = Plage.Offset(0, 35).Value

    'ERREUR ICI  /!\
        toto.Copy Destination:=Worksheets(7).Range(Cells(lignef1, 31))  

        If toto = "Validé" Then
            colonnef1 = colonnef1 + 1
            colonnef2 = colonnef2 + 1
        End If

        ElseIf toto <> "Validé" Then
            lignef1 = lignef1 + 1
            lignef2 = lignef2 + 1
            colonnef1 = 8
            colonnef2 = 2
        End If

    If Plage Is Nothing Then
        Worksheets(7).Range(Cells(lignef1, 31)) = "Validé"
        lignef1 = lignef1 + 1
    End If

End Sub

Voici mon problème :
juste après la ligne en commentaire 'ERREUR ICI, j'ai une erreur de qualificateur lors de la compilation.
Je pense que ceci est dû au fait que je n'ai pas définit de type pour ma variable toto.
En fait, j'aimerais que toto prenne la valeur souhaitée (validé ou pas validé). Seulement, cette valeur est le résultat d'une suite de condition (if). Je pense que mon problème vient de là mais je ne sais pas comment résoudre ce problème ! :S
Quelqu'un pourrait-il m'expliquer s'il vous plaît ?! ^^"

D'avance merci !
 

kjin

XLDnaute Barbatruc
Re : Problème de qualificateur

Re,
C'est à ne rien n'y comprendre :confused:
Tu indiques feuilles 2 et 4 et la macro concerne les feuilles 7 et 8
Tu incrémentes lignef2 et colonnef2, mais nul trace de ces variables dans la boucle
Pourquoi incrémenter alors que tu as une boucle dont tu peut te servir
Sans fichier et sans filet le code pourrait se réduire à ça
Code:
Sub TestResearch()
    Dim NumAno As String
    Dim Cellule As Range
    Dim NBLignes As Integer
    NbLignes = Worksheets(7).Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To NbLignes
        NumAno = Worksheets(7).Cells(i, 8).Value
        Set Cellule = Worksheets(8).Range("B4:B65536").Find(NumAno)
            If Not Cellule Is Nothing Then
                Worksheets(7).Cells(i, 31) = Cellule.Offset(0, 35).Value
            Else
                Worksheets(7).Cells(i, 31) = "Corrigée"
            End If
    Next
End Sub
A+
kjin
 
Dernière édition:

Dapounet

XLDnaute Nouveau
Re : Problème de qualificateur

Mea Culpa ! En fait, à la base, je pensais travaillé avec les feuilles 2 && 4 ! Mais après réflexion et relecture de la valeur de mes variables au fur et à mesure, je me suis rendu compte que c'était avec les feuilles 7 && 8 !

J'ai un petit peux de mal à choisir les noms de variables les plus appropriés, j'en suis conscient et m'en excuse :$

Pour les fichiers, j'ai fournit ce que je pouvais en exemple avec ce message ;)

Sinon, effectivement, la dernière méthode donnée est la plus rapide et la plus efficace :eek::eek::eek:

Merci pour cela !!


PS : le fichier en pièce jointe correspond à mes 2 feuilles après application de ma macro !
Toutefois, voici un problème : -et je pense la réponse à la question : a quoi servent lignef1,colonnef1-
- chaque ligne peut comporter plusieurs anomalies. Il ne faut donc pas seulement traiter la première colonne (H) mais toutes celles comportant une anomalie jusqu'à ce qu'il n'y en ait plus !

Pour cela, ma macro marche "presque" bien vu qu'en fait, si j'ai 7 anomalies (comme dans mon fichier) sur la première ligne, il traite les 7, va jusqu'à la 8ème case (la O) et du coup, ma variable prend comme valeur "" !!! Ce qui fait qu'elle n'est pas considéré comme Nothing ! Et là, ça ne me fait pas ce que je veux du coup ! :S
Vu que ça passe l'état de mon véhicule en "pas validé" même si les 7 anomalies sont corrigées !

Que puis-je faire contre ça ?

De plus, est-ce qu'un set peut être fait avec un Or ? Car mon patron n'a pas bien rempli son tableau !!! et du coup, les numéros d'anomalies différent un tout petit peux, de temps en temps ! En fait, les véritables numéros d'anomalies sont de type :
"XXXXX-G1-XXXXX"
Mais parfois, je n'ai que "XXXXX-XXXXX"
J'aimerais faire une recherche juste par rapport aux 5 premiers && 5 derniers caractères des cellules. Est-ce possible ?

(J'espère fournir le maximum d'exemple et de cas possible dans mon fichier d'exemple ;) )

Merci pour votre aide =)
 

Pièces jointes

  • Maintenance garage.xls
    27 KB · Affichages: 66
  • Maintenance garage.xls
    27 KB · Affichages: 65
  • Maintenance garage.xls
    27 KB · Affichages: 60
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Problème de qualificateur

Re,
Pour être sûr d'être sur le bon chemin, à l'aide de ton fichier et de ton code fourni précédemment
Pour la ligne X, pour chaque Code dans les Colonnes 8 (H) à 14 (N) de la Feuille 1
je recherche le Code correspondant dans la Colonne 2 (B) de la Feuille 2
Si tous les Codes renvoient "Corrigée" dans la Colonne 37 (AK) de la Feuille 2
la cellule([Ligne X, Colonne 31) de la Feuille 1 = "Corrigée" sinon "Pas validée"
Je sais, c'est pas très pro, mais c'est le seul moyen de comprendre
Suis-je à coté ?
A+
kjin
 

Dapounet

XLDnaute Nouveau
Re : Problème de qualificateur

Pour être sûr d'être sur le bon chemin, à l'aide de ton fichier et de ton code fourni précédemment
Pour la ligne X, pour chaque Code dans les Colonnes 8 (H) à 29 (AC) de la Feuille 1
je recherche le Code correspondant dans la Colonne 2 (B) de la Feuille 2
Si tous les Codes renvoient "Corrigée" dans la Colonne 37 (AK) de la Feuille 2
la cellule([Ligne X, Colonne 31) de la Feuille 1 = "Corrigée" sinon "Pas validée"
Je sais, c'est pas très pro, mais c'est le seul moyen de comprendre
Suis-je à coté ?
A+
kjin
Et là, t'es tout à fait dans le juste =)

Bien joué pour avoir réussi à décrypter ma pensée !!! C'est pas forcément évident !! xD
 

kjin

XLDnaute Barbatruc
Re : Problème de qualificateur

Bonsoir,
Je n'est pas évoqué le cas ou le code n'existe pas, donc j'ai supposé "Corrigée", il faudra modifier la ligne correspondante si ce n'est pas le cas
Je regarderai dans la soirée, la recherche sur une partie du code, comme tu l'as demandé
A+
kjin
 

Pièces jointes

  • Maintenance garage_V1.zip
    11.8 KB · Affichages: 33

kjin

XLDnaute Barbatruc
Re : Problème de qualificateur

Re,
Pour la recherche sur une partie de NumAno
Remplace la ligne
Code:
Set Cellule = Sheets(2).Range("B1:B500").Find(NumAno)
Par celle ci
Code:
Set Cellule = Sheets(2).Range("B1:B500").Find(Left(NumAno, 5) & "*" & Right(NumAno, 5))
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 723
Messages
2 091 350
Membres
104 886
dernier inscrit
anissa760