Trouver la 1ère cellule vide sur une ligne donnée

jofdm

XLDnaute Occasionnel
Bonjour à tous,

Mon problème est le suivant :
Je fais une recherche à partir d'un userform. Le résultat de cette recherche s'affiche dans la TextBox 1.
Ensuite, dans ma feuille de données, je souhaite inscrire la valeur de la Textbox9 de ce même userform dans la 1ère colonne vide de la ligne correspondant à la textbox1.

J'ai donc écrit le code suivant :

Private Sub Valider_Click()
Dim x As Long
Dim y As Long
Dim z As String
z = SortieStock.TextBox1.Value
Dim trouve As Boolean
Dim FL2 As Worksheet
Set FL2 = Worksheets("SORTIE STOCKS")
For x = 2 To FL2.Range("A65535").End(xlUp).Row
If UCase(FL2.Range("A" & x)) Like z Then
LigneActive = x
End If
Next x
For y = 7 To 50
If FL2.Cells(LigneActive, y).Value = "" Then
ColonneActive = y
FL2.Select
Cells(LigneActive, ColonneActive).Select
FL2.Cells(LigneActive, ColonneActive).Value = SortieStock.TextBox9.Value
Unload SortieStock
MsgBox ("Sortie comptabilisée")
Sheets("MENU").Select
SortieStock.Show
trouve = True
Exit For
End If
Next y

If Not trouve Then
MsgBox ("Requête non trouvée")
End If

End Sub

Mon souci c'est que ce code ne fonctionne que pour une seule ligne.
Pour toutes les autres, l'erreur se situe sur la ligne soulignée et je ne comprends absolument pas pourquoi.
Merci d'avance pour votre aide car je commence à m'arracher les cheveux !
 

jofdm

XLDnaute Occasionnel
Re : Trouver la 1ère cellule vide sur une ligne donnée

Merci de t'intéresser à mon problème skoobi.
Voici un extrait du fichier
 

Pièces jointes

  • Forum.zip
    29.3 KB · Affichages: 52
  • Forum.zip
    29.3 KB · Affichages: 62
  • Forum.zip
    29.3 KB · Affichages: 57

skoobi

XLDnaute Barbatruc
Re : Trouver la 1ère cellule vide sur une ligne donnée

Re,

je te propose ce code pour le bouton valider:

Code:
Private Sub Valider_Click()
  Dim x As Long
  Dim y As Long
  Dim NomZ As String
  Dim Trouve As Boolean
  Dim FL2 As Worksheet
  Dim NomComm As Range
  NomZ = SortieStock.TextBox1.Value
  Set FL2 = Worksheets("SORTIE STOCKS")
With FL2
  Set NomComm = .Columns(1).Find(NomZ, LookIn:=xlValues, lookat:=xlWhole)
  If Not NomComm Is Nothing Then
    LigneActive = NomComm.Row
  Else
    MsgBox "Le nom commercial n'a pas été trouvé.", vbExclamation
    Exit Sub
  End If
  
  ColonneActive = .Range("IV" & LigneActive).End(xlToLeft).Column + 1
  .Cells(LigneActive, ColonneActive).Value = SortieStock.TextBox9.Value
End With

End Sub
Il y a des données en colonne Z donc la quantité à sortir va se mettre en colonne AA.

Edit: 2 up en à peine 5 heures, faut pas être pressé comme ça...
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Trouver la 1ère cellule vide sur une ligne donnée

Bonsoir jofdm, skoobi


Teste comme ça :

Code:
Private Sub Valider_Click()
Dim x As Long
Dim y As Long
Dim z As String
Dim trouve As Boolean
Dim FL2 As Worksheet

z = SortieStock.TextBox1.Value
Set FL2 = Worksheets("SORTIE STOCKS")
With FL2
    For x = 2 To .Range("A65536").End(xlUp).Row
        If UCase(.Range("A" & x)) Like UCase(z) Then
        LigneActive = x
        End If
    Next x
     For y = 7 To 50
         If .Cells(LigneActive, y).Value = "" Then
            .Cells(LigneActive, y).Value = SortieStock.TextBox9.Value
             Unload SortieStock
             MsgBox ("Sortie comptabilisée")
             SortieStock.Show
             trouve = True
             Exit For
         End If
     Next y
    
    If Not trouve Then
          MsgBox ("Requête non trouvée")
        End If
End With
End Sub

J'ai supprimé :
- les Select qui ne servent à rien,
- la variable ColonneActive

La fonction UCase met en majuscule, donc il faut aussi mettre en majuscule la variable z.
Tu peux aussi facilement te passer de la variable FL2 comme ceci :
With Sheets("("SORTIE STOCKS")

Et comme le dit skoobi, à un moment donné il y aura un problème avec la colonne z

A+ bonne soirée
 

jofdm

XLDnaute Occasionnel
Re : Trouver la 1ère cellule vide sur une ligne donnée

Bonsoir Skoobi, bonsoir bqtr,
Merci beaucoup pour votre aide, je vais tester ça de ce pas.
Quant aux UP, désolé, je recommencerai plus promis. Mais j'étais vraiment frustré de ne pas trouver mon erreur, d'autant que, aussi bizarre que cela puisse paraître, il fonctionnait sur une et une seule ligne.
Encore merci à vous 2 et bonne soirée
 

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet