Recherche V multiples résultats

Bonjour,

J'ai trouvé le problème

La ligne de code à supprimé .DataBodyRange.Item(lig, 1) = c.Offset(0, 2).Value

on observant de près était noté .DataBodyRange.Item(lig, 1) = c.Offset(0, 3).Value du coup j'ai juste modifié le 3 par 2 et mtn ça marche.

Plus que le dernier problème et après je pourrais clôturer le sujet.

La page Article FID est une copie/ Déplacé d'un autre fichier. Par conséquence j'ai refait toute la requête directement et par conséquence je n'ai plus de liaisons. Mais ça ne marche toujours pas et j'ai trouvé la cause et la solution mais ça ne marche toujours pas

il y a des espaces après les références, ce code m'a été donné par qqn mais j'arrive plus à le faire fonctionner

Sub Actualiser()
  Dim i As Long
  For i = 1 To [ITEMBL].Rows.Count
    [ITEMBL].Item(i, 1) = Application.WorksheetFunction.Trim([ITEMBL].Item(i, 1))
  Next
End Sub
image

J'ai trouvé le problème

Mais je vous l'ai écrit dans mon dernier post...

il y a des espaces après les références, ce code m'a été donné par qqn mais j'arrive plus à le faire fonctionner

Dans quelle feuille ?

Edit : ok c'est la feuille ArticleFID. Je regarde

oui c'est vrai, vous l'aviez dit mais j'ai pas fait attention

J'ai trouvé une solution alternative, mettre en place un bouton qui enlève l'espace. J'actualise mes données et j'enlève l'espace. l'idéal c'est que j'ai plus les espaces quand j'actualise tout

Merci pour votre aide

Essayez toujours ceci

Sub Suppr_espaces()
Dim cel As Range, plage As Range

With Feuil6.ListObjects(1).DataBodyRange
    Set plage = Union(.Columns(1), .Columns(2), .Columns(3)) 'défini la plage
    For Each cel In plage
        cel = Trim(cel)
    Next cel
End With
End Sub

Crdlt

je mets ça dans module 1?

Feuil6 (Article FID) ?

Aucun des deux ne marche

image image

oui vous le mettez dans un module. ensuite vous l' exécutez. cela prend un peu de temps vu le nombre de données dans la feuille Article

oui Feuil6 = article Fid. (Dans vba regardez à gauche pour comprendre)

Édit. Oups ... je viens de voir un truc. Il faut supprimer ceci --》.databodyrange dans le code. Desole...

Ca marche mais je dois exécuter la macro à chaque fois que j'actualise les données. Est ce possible d'exécuter automatiquement le code quand j'actualise les données?

Si c'est pas possible je clôture le poste

en enlevant le .databodyrange , ça ne marche plus

image

rajoutez le .databodyrange derrière chaque .columns()

donc .columns(1》.databodyrange. .columns(2).data....

image

Sub Enregistrer()

Dim wbchaine As String

wbchaine = ActiveWorkbook.Sheets("Feuil1").Range("Enregistrer_wb").Value

Workbooks(wbchaine).Save

End Sub

Je peux utiliser ça pour enregistrer mon fichier avec le nom rentré page Suivi ?

Lorsque vous postez un code veillez à utiliser les balises de code disponibles dans le menu en cliquant sur l'icone </> et en collant le code dans la fenetre

bon oubliez tout ce que je vous ai donné. Je vous répondais depuis mon portable sans pouvoir vérifier...

Le code comme ceci :

Sub Suppr_espaces()
Dim cel As Range

With Feuil6.ListObjects(1)
    For Each cel In Union(.ListColumns(1).DataBodyRange, .ListColumns(2).DataBodyRange, .ListColumns(3).DataBodyRange)
        cel = Trim(cel)
    Next cel
End With
End Sub

ou mieux comme ceci (nettement plus rapide)

Sub Suppr_espaces()
Dim tablo()
Dim i As Byte, j As Long

With Feuil6.ListObjects(1)
    For i = 1 To 3
        tablo = .ListColumns(i).DataBodyRange.Value
        For j = LBound(tablo, 1) To UBound(tablo, 1)
            tablo(j, 1) = Trim(tablo(j, 1))
        Next j
        .ListColumns(i).DataBodyRange = tablo
    Next i
End With
End Sub

Je peux utiliser ça pour enregistrer mon fichier avec le nom rentré page Suivi ?

Je n'ai pas compris .... Le but est de sauvegarder votre fichier sous un autre nom ?

- le nom Enregistrer_WB correspond à quoi ? une cellule ?
- Feuil1 : Non, si c'est la feuille Suivi, c'est feuil3

Bonjour

Le code fonctionne mais quand j'actualise les données, je dois re exécuté la macro.

J'ai rajouté

ActiveWorkbook.RefreshAll
Application.Wait Now + TimeValue("0:00:30")
Sub Suppr_espaces()
ActiveWorkbook.RefreshAll
Application.Wait Now + TimeValue("0:00:30")
Dim tablo()
Dim i As Byte, j As Long

With Feuil6.ListObjects(1)
    For i = 1 To 3
        tablo = .ListColumns(i).DataBodyRange.Value
        For j = LBound(tablo, 1) To UBound(tablo, 1)
            tablo(j, 1) = Trim(tablo(j, 1))
        Next j
        .ListColumns(i).DataBodyRange = tablo
    Next i
End With
End Sub

Mais ça ne fonctionne pas

Et l'autre commande et d'enregistrer le fichier avec le nom renseigné dans le champs page suivi

Private Sub TextBox2_Change()

End Sub

Le code fonctionne mais quand j'actualise les données, je dois re exécuté la macro.

Ce n'est pas le bon code

Vous actualiser comment et à quelle fréquence ? A l'ouverture du fichier par exemple ?

expliquez moi là comment vous fonctionnez


edit : dans votre fichier posté je viens de voir que vous aviez placé une macro "Suppr espaces" dans la feuille ArticleFID. N'oubliez pas de la supprimer.


Re Edit : peut être cette slution. Faites un click droite sur l'onglet de votrefeuille ARTICLEFID puis choisissez l'option "Visualiser le code". Ensuite dans la fenêtre collez le code ci-dessous. (le code "Suppre_espaces" reste dans le module)

Private Sub Worksheet_TableUpdate(ByVal Target As TableObject)
Call Suppr_espaces
End Sub

Lorsque vous mettrez votre feuille à jour, le code Suppr_espacs devrait être exécuté.

Rechercher des sujets similaires à "recherche multiples resultats"