Sélection de ligne avec condition

Résolu
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 :
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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  3. ClaraBRND
     
    https://www.cjoint.com/c/JGukvKr8N7V

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

    Merci
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Oh pardon
      J'ai repris ton code du forum désolé en effet il faut remplacer range par cells
      0
      1. ClaraBRND > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Même en effectuant cette opération cela ne fonctionne pas. Ne faut il pas définir le "C" ?
        0
  6. ClaraBRND
     
    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
  7. ClaraBRND
     
    Ne faut-il pas définir "C" ? Comment VBA peut savoir qu'il s'agit ici de cellule ?
    0
  8. ClaraBRND
     
    Cela marche nickel !!
    Merci Jordane pour ton aide.

    Bonne journée
    0