Valider, rechercheAfiicher et modifier

Bonjour à tous

Demande d’aide

BoutonVALIDER : pour chaque ligne, remplir la premiere cellule vide trouvée

Problème, ça ne marche pas avec la ligne 1

BoutonRECHERCHER : recherche et afficher

Problème : ça ne marche pas avec textbox4 et textbox5(derniereCellule non vide)

BoutonMODIFIER : modifie les données

Problème : ça ne marche pas du tout

BoutonSUPPRIMER : aucun soucis

ci-joint le fichier y compris le code

15classeur1.xlsm (27.98 Ko)

cordialement

Bonjour Konan255,

Le premier souci :

BoutonVALIDER : pour chaque ligne, remplir la premiere cellule vide trouvée

Problème, ça ne marche pas avec la ligne 1

La recherche du "Nom" se fait sur la colonne entière. La cellule "A1" contient la même info que "A2". La recherche trouve donc A1 en premier et non A2 qui est le premier "Nom" de ta liste. Change l'entête pour "Nom" ou "Nom Client" et le souci sera parti.

Biz

Bonjour Konan 255,

Pour le 2e souci :

BoutonRECHERCHER : recherche et afficher

Problème : ça ne marche pas avec textbox4 et textbox5(derniereCellule non vide)

Private Sub CommandButton2_Click() ' Rechercher
   Dim Ws As Worksheet
   Dim searchValue As String
   Dim cell As Range

   Set Ws = ThisWorkbook.Sheets("Feuil1")
   searchValue = Me.TextBox2.Value
   Set cell = Ws.Range("A:A").Find(what:=searchValue, LookIn:=xlValues, lookat:=xlWhole)

   If Not cell Is Nothing Then
      Me.TextBox2.Value = Ws.Cells(cell.Row, 1).Value
      Me.TextBox3.Value = Ws.Cells(cell.Row, 2).Value
      Me.TextBox4.Value = Ws.Cells(cell.Row, 3).Value
      Me.TextBox5.Value = Ws.Cells(cell.Row, cell.Columns.Count).End(xlToLeft).Value
   Else
      MsgBox "Element non trouve"
   End If

End Sub

Bizz

quand j'ajoute Me.TextBox5.Value = Ws.Cells(cell.Row, cell.Columns.Count).End(xlToLeft).Value , ça me ramène "le contenu de A1" dans textbox5

Bonjour Konan255,

Il serait préférable de travailler avec le tableau structuré.

Prenons en exemple le bouton "Valider".

Il faut commencer par renommer l'entête de colonne des noms (cellule A1 de la feuille). J'ai choisi "Nom".

Ensuite, teste ce code :

Private Sub CommandButton1_Click() 'valider
Dim i As Integer
Dim LeNom As String
Dim LigneTrouve As Integer

    LeNom = Me.TextBox2.Value
    LigneTrouve = Application.Match(LeNom, Range("Tableau1[Nom]"), 0)
    If IsError(LigneTrouve) Then
      MsgBox "Inexistant"
      Exit Sub
    else
       For i = 4 To Range("Tableau1").Columns.Count
           If IsEmpty(Range("Tableau1").Cells(LigneTrouve, i)) Then
             Range("Tableau1").Cells(LigneTrouve, i).Value = TextBox5.Value
             Exit For
          End If
      Next i
    end if
End Sub

Bizz

Bonjour Konan255,

La recherche ne se fait que sur la colonne "Nom". Il faudrait ajouter le "Prénom".

Donc, rechercher le "Nom" et le Prénom" afin d'éviter les erreurs dues à deux "Nom" semblables.

Bizz

Oui, apres je vais y adapter. jai egalement rectifié les entetes.

le code poue boutonvalider que vous m'avez envoyé marche très bien. Merci infiniment.

il me reste maintenat le bouton rechercher et modifier

Bonjour Konan255,

Si les entêtes de colonne sont :

NomPrénomQuantitéQ1Q2Q3Q4Q5Q6

Bouton "Rechercher", saisir le "Nom" et tester ce code :

Private Sub CommandButton2_Click() ' Rechercher
   Dim Ws As Worksheet
   Dim searchValue As String
   Dim cell As Range
   Dim LeNom

   LeNom = Me.TextBox2.Value
   LigneTrouve = Application.Match(LeNom, Range("Tableau1[Nom]"), 0)
   If IsError(LigneTrouve) Then
      MsgBox "Inexistant"
      Exit Sub
   Else
      TextBox3.Value = Range("Tableau1[Prénom]").Rows(LigneTrouve).Value
      TextBox4.Value = Range("Tableau1[Quantité]").Rows(LigneTrouve).Value

      For i = Range("Tableau1").Columns.Count To 4 Step -1
         If Not IsEmpty(Range("Tableau1").Cells(LigneTrouve, i)) Then
            TextBox5.Value = Range("Tableau1").Cells(LigneTrouve, i).Value
            CelluleVideTrouve = True
            Exit For
         End If
      Next i
   End If

End Sub

Bizz

oui, ça marche parfaitement pour la recherche. encore une de fois de plus, merci merci

Bonjour Konan255,

Le 3e souci :

BoutonMODIFIER : modifie les données

Problème : ça ne marche pas du tout

Il faut quand même un élément de recherche. Dans les deux premiers codes, le "Nom" est utilisé; ce code du bouton "Modifié" fait de même.

Modifions donc les trois autres informations.

Au besoin, avec un peu de modifications, il est possible de modifier aussi le "Nom".

Private Sub CommandButton3_Click() 'modifier
Dim LeNom
Dim LigneTrouve
Dim i As Integer

   LeNom = Me.TextBox2.Value
   LigneTrouve = Application.Match(LeNom, Range("Tableau1[Nom]"), 0)
   If IsError(LigneTrouve) Then
      MsgBox "Inexistant"
      Exit Sub
   Else
      Range("Tableau1[Prénom]").Rows(LigneTrouve).Value = TextBox3.Value
      Range("Tableau1[Quantité]").Rows(LigneTrouve).Value = TextBox4.Value

      For i = Range("Tableau1").Columns.Count To 4 Step -1
         If Not IsEmpty(Range("Tableau1").Cells(LigneTrouve, i)) Then
            Range("Tableau1").Cells(LigneTrouve, i).Value = TextBox5.Value
            Exit For
         End If
      Next i
   End If
End Sub

Bizz

Très cool. Merci infiniment, merci infiniment.

Cependant peux tu voir ce code ci dessous pour moi ?

les lignes du tableau etant sous cette forme

Nom Prenom Quantite Q1 Q2 Q3 Q4 Q5 Q6

N1 P1 12000 15 20 78 10 18 25

N2 P2 1280 18 27 78 10 40 25

avec ce code actuel, je veux:

- effectuer une recherche dans la colonne A

- si l'element est retrouvé, afficher:

nom, prenom et quantite dans textbox2, texbox3 et textbox4

decouper le reste de la ligne en correspondante en groupe de 3 et les afficher(entête+contenu) dans listBox comme des ligne

par exemple, si l'element est trouvé dans la ligne1

textbox2(N1), texbox3(P1)) et textbox4(12000)

et dans la listbox

Q1 Q2 Q3

15 20 78

Q4 Q5 Q6

10 18 25

'.............appel de la fonction ci dessous.......................
Private Sub CommandButton5_Click()
 Dim element As String
 Dim We As Worksheet

 element = Me.TextBox2.Value
 If element <> "" Then
 Set We = ThisWorkbook.Sheets("Feuil1")
     MonElemenCher element, We
End If
End Sub

 '.........fonction pour listBox1...........

Sub MonElemenCher(element As String, We As Worksheet)
Dim i, j As Long
Dim rng As Range
Dim RowNum, LastCol As Long
Dim ValuesArray() As String

On Error Resume Next
Set rng = We.UsedRange.Find(What:=element, LookIn:=xlValues, LookAt:=xlWhole)
On Error GoTo 0

If Not rng Is Nothing Then
RowNum = rng.Row
LastCol = We.Cells(RowNum, We.Columns.Count).End(xlToLeft).Column
ListBox1.Clear

For i = 4 To LastCol Step 3
  If Application.WorksheetFunction.CountA(We.Cells(RowNum, i).Resize(1, 3)) > 0 Then
  ReDim ValuesArray(0 To 2)
    For j = 0 To 2
      If i + j <= LastCol Then
         ValuesArray(j) = We.Cells(RowNum, i + j).Value
      Else
      ValuesArray(j) = ""
      End If
     Next j

    ListBox1.AddItem Join(ValuesArray, vbTab)
  End If
Next i

Else
MsgBox "Element non trouve"
End If

End Sub

quand j'execute, aucune erreur ne s'affiche mais rien ne s'affiche egalement. j'ai tenté egalement avec listView negatif. L'une des deux options(listbox ou listview) me conviendra egalement

merci d'avance

Bonjour Konan255,

Pour l'instant, c'est une version aux dimensions statiques.

Le "ListBox" affiche les infos à la suite de la recherche.

konan255 listbox

Bizz

14classeur1b.xlsm (40.75 Ko)

Waouuuuu..... Merci infiniment. ça marche très bien

Rechercher des sujets similaires à "valider rechercheafiicher modifier"