XL 2019 Problème de remplissage cellule en vba

snoopy07

XLDnaute Occasionnel
Bonjour le forum

Apres plusieur recheche j ai trouver le code suivant

VB:
Private Sub CommandButton1_Click()

      With XXXX
          For i = 2 To .Cells(2, Columns.Count).End(xlToLeft).Column
              If CStr(.Cells(2, i)) = ComboBox1.Value Then
                 .Cells(2, i).Select
                 Exit For
              End If
              Next i
              If ActiveCell = ComboBox1.Value Then
              
                 ActiveCell.Offset(1, 0).Value = Format(TextBox1, "MM/DD/YYYY")
          End If
      End With
      RAZ
End Sub

il fonctionne mais il y a un petit problème
c est qu il me remplie toujours la première cellule de la colonne a remplie il ne va pas me chercher la dernière cellule vide a remplir

je pense qu il me manque un petit bout de code entre

If ActiveCell = ComboBox1.Value Then

ActiveCell.Offset(1, 0).Value = Format(TextBox1, "MM/DD/YYYY")
j ai la fin du code mais je n arrive pas a trouver le debut
pour moi la fin du devrait etre .End(xlUp).Row + 1

pouvez vous me dire comment trouver le debut de ce code
cordialement
Snoopy 07
 

Pièces jointes

  • W 13.xlsm
    32.7 KB · Affichages: 2

fanch55

XLDnaute Barbatruc
Bonjour, le code fourni fait bien ce pour quoi il a été conçu :
Il parcourt les colonnes de la ligne 2 à la recherche de la valeur de la combobox et quand il la trouve, il met dans la cellule juste en dessous la valeur de la textbox .
Le code peut être simplifié et mieux sécurisé car il a une faille .
Mais je ne pense pas que ce soit ce que vous voulez, si vous pouviez développer votre besoin ?
 

snoopy07

XLDnaute Occasionnel
Bonjour fanch55
ma demande est de pouvoir remplir la dernière cellule vide de la colonne sectionner par la combobox
par contre pour si on peut simplifier le code je serai d accord pour ton aide car j ai pris plusieurs modèle de code et j ai essaie d en faire un qui fonctionne
peut tu m expliquer la faille du code que j ai mis en place
cordialement
Snoopy 07
 

fanch55

XLDnaute Barbatruc
La faille c'est les lignes ci-dessous :

VB:
            Next i
            If ActiveCell = ComboBox1.Value Then
               ActiveCell.Offset(1, x).Value = Format(TextBox1, "MM/DD/YYYY")
            End If
Si on n'a pas trouvé la cellule cherchée et qu'on a sélectionné au préalable une cellule hors de la ligne 2 ( et que par malchance, elle a la même valeur que la combobox ), celle immédiatement en dessous aura la valeur du textbox , ce n'est pas ce qui avait été initialement prévu ...

Si je comprend bien ta demande, ce n'est donc pas la cellule immédiatement en dessous de la cellule trouvée qui aura la valeur de la textbox, mais la dernière cellule vide de la colonne de la cellule trouvée .
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Le code ci-dessous devrait faire ce que tu demandes :
VB:
Option Compare Text
Private Sub CommandButton1_Click()
Dim Colonne As Range
    With Sheets("XXXX")
        Set Colonne = .Rows(2).Find(ComboBox1.Value, searchorder:=xlByColumns)
        If Not Colonne Is Nothing Then
            .Cells(.Rows.Count, Colonne.Column).End(xlUp).Offset(1) = Format(TextBox1, "MM/DD/YYYY")
        End If
    End With
    RAZ
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 934
Messages
2 093 736
Membres
105 803
dernier inscrit
metroMBP