Sélection de ligne avec condition

Résolu/Fermé
ClaraBRND - Modifié le 20 juil. 2020 à 11:58
 ClaraBRND - 20 juil. 2020 à 15:29
Bonjour,

Je souhaite rentrer des données sur une ligne précise.
Concrètement il s'agit de faire une demande de gabarit.
Quand on clique sur 'valider la demande', les informations s'ajoutent sur la ligne du tableau correspondant au gabarit choisit.

Mon code doit donc chercher dans la colonne 'gabarit' la ligne ou se trouve le nom du gabarit sélectionné dans la demande et ajouter les information dans les colonnes de cette même ligne. Le beug se trouve à partir la ligne Range(Ligne, 4) = CaseQuantité.Value (ajouter l'information dans la colonne D de la ligne du gabarit sélectionné)

Mon code est le suivant :
Dim Rw As Range
Dim Ligne As Long
    
    For Each Cell In Sheets(Produit).Range("B5:B100")
        If Cell.Value = CaseGabarit.Value Then Ligne = Rw.Row
        
            Range(Ligne, 4) = CaseQuantité.Value
            Range(Ligne, 5) = CaseBesoin.Value
            Range(Ligne, 7) = CasePrio.Value
            Range(Ligne, 8) = CasePole.Value
            Range(Ligne, 9) = CaseDemandeur.Value
            Range(Ligne, 10) = CaseDate.Value
            Range(Ligne, 11) = CaseDélai.Value

            If CheckBoxUsure.Value = True Then
                Range(Ligne, 13) = CheckBoxUsure.Caption
            End If
        
            If CheckBoxCasse.Value = True Then
                Range(Ligne, 13) = CheckBoxCasse.Caption
            End If
        
            If CheckBoxQuantitéSup.Value = True Then
                Range(Ligne, 13) = CheckBoxQuantitéSup.Caption
            End If
        
            If CheckBoxNonConforme.Value = True Then
                Range(Ligne, 13) = CheckBoxNonConforme.Caption
            End If
    
            If CheckBoxEvolution.Value = True Then
                Range(Ligne, 13) = CheckBoxEvolution.Caption
            End If
        
            If CheckBoxAutreRaison = True Then
                Range(Ligne, 13) = CaseAutreRaison.Value
            End If
    Next


EDIT : Ajout des balises de code

Vous me seriez d'une grande aide !! Merci
A voir également:

8 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2020 à 15:06
Aucun souci avec ce code
 Dim Rw As Range
    Dim Ligne As Long
    
    For Each C In Sheets(Produit).Range("B5:B100")
        If C.Value = CaseGabarit.Value Then
            Ligne = C.Row
        
            Cells(Ligne, 4) = CaseQuantité.Value
            Cells(Ligne, 5) = CaseBesoin.Value
            Cells(Ligne, 7) = CasePrio.Value
            Cells(Ligne, 8) = CasePole.Value
            Cells(Ligne, 9) = CaseDemandeur.Value
            Cells(Ligne, 10) = CaseDate.Value
            Cells(Ligne, 11) = CaseDélai.Value

            If CheckBoxUsure.Value = True Then
                Cells(Ligne, 13) = CheckBoxUsure.Caption
            End If
        
            If CheckBoxCasse.Value = True Then
                Cells(Ligne, 13) = CheckBoxCasse.Caption
            End If
        
            If CheckBoxQuantitéSup.Value = True Then
                Cells(Ligne, 13) = CheckBoxQuantitéSup.Caption
            End If
        
            If CheckBoxNonConforme.Value = True Then
                Cells(Ligne, 13) = CheckBoxNonConforme.Caption
            End If
    
            If CheckBoxEvolution.Value = True Then
                Cells(Ligne, 13) = CheckBoxEvolution.Caption
            End If
        
            If CheckBoxAutreRaison = True Then
                Cells(Ligne, 13) = CaseAutreRaison.Value
            End If
        End If
    Next
    
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 20 juil. 2020 à 12:01
Bonjour,

Ton souci.. c'est que tu as utilisé Range au lieu de Cells

Cells(Ligne, 4)


Par contre, dans ta boucle, éviter d'utiliser le mot "Cell" qui est proche de celui utilisé par Excel (Cells )pour cibler une cellule
Remplace "Cell" par C dans la boucle
For Each C In Sheets(Produit).Range("B5:B100")
  If C.Value = CaseGabarit.Value Then Ligne = Rw.Row


0
Merci pour votre réponse !! Malheureusement, Excel me met toujours la ligne "cells(Ligne, 4) = CaseQuantité.Value" en erreur ...

Puis-je vous joindre mon fichier ? (si oui comment, je n'ai pas l'habitude ....)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2020 à 12:13
0
https://www.cjoint.com/c/JGukvKr8N7V

Voici le fichier, il s'agit de la macro associée à l'Userform DemandeDeGabarit

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2020 à 14:04
Dim Rw As Range
Dim Ligne As Long
    
    For Each C In Sheets(Produit).Range("B5:B100")
        If C.Value = CaseGabarit.Value Then 
            Ligne = C.Row
        
            Range(Ligne, 4) = CaseQuantité.Value
            Range(Ligne, 5) = CaseBesoin.Value
            Range(Ligne, 7) = CasePrio.Value
            Range(Ligne, 8) = CasePole.Value
            Range(Ligne, 9) = CaseDemandeur.Value
            Range(Ligne, 10) = CaseDate.Value
            Range(Ligne, 11) = CaseDélai.Value

            If CheckBoxUsure.Value = True Then
                Range(Ligne, 13) = CheckBoxUsure.Caption
            End If
        
            If CheckBoxCasse.Value = True Then
                Range(Ligne, 13) = CheckBoxCasse.Caption
            End If
        
            If CheckBoxQuantitéSup.Value = True Then
                Range(Ligne, 13) = CheckBoxQuantitéSup.Caption
            End If
        
            If CheckBoxNonConforme.Value = True Then
                Range(Ligne, 13) = CheckBoxNonConforme.Caption
            End If
    
            If CheckBoxEvolution.Value = True Then
                Range(Ligne, 13) = CheckBoxEvolution.Caption
            End If
        
            If CheckBoxAutreRaison = True Then
                Range(Ligne, 13) = CaseAutreRaison.Value
            End If

      End if
    Next


0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 juil. 2020 à 14:39
Oh pardon
J'ai repris ton code du forum désolé en effet il faut remplacer range par cells
0
ClaraBRND > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 juil. 2020 à 15:03
Même en effectuant cette opération cela ne fonctionne pas. Ne faut il pas définir le "C" ?
0
Jordan,

La premiere ligne avec Range :
Range(Ligne, 4) = CaseQuantité.Value
reste en erreur, je pensais qu'il fallait mett cells?

Quand je modifie tout en cells c'est la 3eme ligne :
Cells(Ligne, 7) = CasePrio.Value
qui se met en erreur, je ne comprend pas pourquoi

Vous n'utilisez pas le Rw après l'avoir mit en range, est-il utile de le mettre du coupe (1ere ligne)
0
Ne faut-il pas définir "C" ? Comment VBA peut savoir qu'il s'agit ici de cellule ?
0
Cela marche nickel !!
Merci Jordane pour ton aide.

Bonne journée
0