XL 2016 Souci pour mettre un nombre dans une cellule en croisant colonne et ligne.

Xender

XLDnaute Nouveau
Bonjour,

Je me permet de venir vers vous car j'ai un souci avec mon code de programmation.

Voici un cahier des charges pour la rédaction du code VBA.

Dans la feuille « Demande chantier »,

_ Un CommandButton1 qui ouvre un Userform1 qui me permet de faire une demande initiale.

Lorsque mon UserForm1 s’ouvre,

_ Dans la TextBox1, la personne renseigne son nom.

_ Dans la ComboBox2, on peut choisir un nom de chantier, par exemple « VERSAILLES ».

_ Dans la ComboBox4, on peut choisir une semaine, par exemple « 5 ».

_ Dans la TextBox2, on écrit le nombre de personnes souhaité, par exemple « 10 »


Une fois que tout est remplie dans mon UserForm1, je clique sur le CommandButton1 qui est dans mon UserForm1 pour que la valeur renseignée dans la TextBox2 de mon UserForm1, soit renseigné dans la feuille nommé « Besoins 2023 ».

Dans la feuille « Besoins 2023 », mes chantiers sont renseignés dans la colonne D, et commence à partir de D9, mes semaines sont renseignées dans la ligne 5 à partir de la colonne H5.


La valeur de la TextBox2 doit être renseignée à l’intersection du chantier choisi dans la ComboBox2 et la semaine choisi dans la ComboBox4, dans la cellule du haut, car il y a deux cellules à l’intersection des chantiers et semaines.

Lorsque j'exécute mon programme :

VB:
Private Sub CommandButton1_Click()
    Dim chantier As String
    Dim semaine As String
    Dim demande As Integer

    chantier = UserForm1.ComboBox2.Value
    semaine = UserForm1.ComboBox4.Value
    demande = CInt(UserForm1.TextBox2.Value)

    ' Trouver la ligne correspondant au chantier
    Dim chantierRange As Range
    Set chantierRange = Sheets("Besoins 2023").Range("D9:D" & Sheets("Besoins 2023").Cells(Rows.Count, "D").End(xlUp).row).Find(chantier)

    ' Trouver la colonne correspondant à la semaine
    Dim semaineColumn As Long
    semaineColumn = Sheets("Besoins 2023").Cells(5, Columns.Count).End(xlToLeft).Column + 1

    ' Remplir la valeur dans la cellule appropriée
    Sheets("Besoins 2023").Cells(chantierRange.row, semaineColumn).Value = demande

    ' Fermer le UserForm1
    UserForm1.Hide
End Sub


Il m'affiche ceci :
Erreur 91.png


Puis me montre cette ligne de code :
ligne en cause.png


Je ne comprend absolument pas ce qu'il ce passe. Pour moi le code est claire dans ma tête et je n'arrive pas à me dépatouiller !

Je vous joint le fichier également.

J'éspère que quelqu'un auras une solution !

Merci par avance je reste à votre disposition si vous avez des questions.

Cordialement.

Xender
 

Pièces jointes

  • Planning pôle travaux 20231002-copie.xlsm
    400.7 KB · Affichages: 3
Dernière édition:
Solution
Bonjour sylvanu, je me permet de vous faire un retour.

J'ai réussi tant bien que mal à faire une boucle ^^

VB:
Dim semaineSelectionnee As Integer
        semaine2 = CInt(UserForm1.ComboBox5.Value)
    semaineSelectionnee = Application.Match(semaine2, Sheets("Besoins 2023").Range("5:5"), 0)

    ' Vérifie que ComboBox5 contient un chiffre
    If Not IsNumeric(semaineSelectionnee) Then
        MsgBox "Veuillez choisir un chiffre valide dans ComboBox5.", vbExclamation
        Exit Sub
    End If

    ' Parcours les cellules entre semaineColumn et semaineSelectionnee
    For i = semaineColumn To semaineSelectionnee
        Sheets("Besoins 2023").Cells(chantierRange, i).Value = demande
    Next i

Cela fonctionne parfaitement, encore...

Xender

XLDnaute Nouveau
Bonjour sylvanu, je me permet de vous faire un retour.

J'ai réussi tant bien que mal à faire une boucle ^^

VB:
Dim semaineSelectionnee As Integer
        semaine2 = CInt(UserForm1.ComboBox5.Value)
    semaineSelectionnee = Application.Match(semaine2, Sheets("Besoins 2023").Range("5:5"), 0)

    ' Vérifie que ComboBox5 contient un chiffre
    If Not IsNumeric(semaineSelectionnee) Then
        MsgBox "Veuillez choisir un chiffre valide dans ComboBox5.", vbExclamation
        Exit Sub
    End If

    ' Parcours les cellules entre semaineColumn et semaineSelectionnee
    For i = semaineColumn To semaineSelectionnee
        Sheets("Besoins 2023").Cells(chantierRange, i).Value = demande
    Next i

Cela fonctionne parfaitement, encore merci mille fois pour votre aide précieuse !
 

Discussions similaires

Réponses
28
Affichages
990

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78