Sélection de ligne avec condition
Résolu
ClaraBRND
-
ClaraBRND -
ClaraBRND -
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 :
EDIT : Ajout des balises de code
Vous me seriez d'une grande aide !! Merci
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
8 réponses
-
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 -
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 boucleFor Each C In Sheets(Produit).Range("B5:B100") If C.Value = CaseGabarit.Value Then Ligne = Rw.Row
-
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 ....) -
https://www.cjoint.com/c/JGukvKr8N7V
Voici le fichier, il s'agit de la macro associée à l'Userform DemandeDeGabarit
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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
-
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) -
-