XL 2016 Rechercher un mot et selectionner les cellules attenantes

Alanrabe69

XLDnaute Nouveau
Bonjour

J'ai un tableau de contacts

ABCDEFGHIJK
1
Date​
Civilité​
Nom ou raison sociale​
Prénom​
Adresse​
Code postal​
Commune​
Téléphone​
Email​
Association​
Remarques​
2
... xx09-marsMonsieurDupontRobert2, rue de l'Alpbabet69003Lyon06 99 99 99 99r.dupont@gmail,comxxxTest
.......

Je voudrai chercher un nom (ici Dupont)
 
Solution
Bonsoir Alanrabe69, Bernard,

Bernard pensais que vous vouliez des choses compliquées alors restons simples :
VB:
Sub Chercher_contact()
Dim ref As String, i As Variant
ref = InputBox("Entrer le Nom ")
If ref = "" Then Exit Sub
With Sheets("Liste contacts")
    i = Application.Match(ref, .[C:C], 0)
    If IsError(i) Then MsgBox "'" & ref & "' non trouvé...": Exit Sub
    Sheets("Saisie Dons").[F3:F10] = Application.Transpose(.Range("A" & i).Resize(, 8))
End With
End Sub
A+

Fred0o

XLDnaute Barbatruc
Bonjour Alanrabe69 et bienvenue sur le forum.
Un fichier exemple anonymise serait le mieux pour expliquer ton problème et pour que nous puissions y répondre correctement.
Sinon, tu peux essayer : <Ctrl>+<F>, taper "Dupont" dans la boite de dialogue et valider par <Entrée>.
 

Alanrabe69

XLDnaute Nouveau
Bonjour

Voici en fait ce que je veux faire :

J’ai une feuille Liste contacts et la feuille Saisie Dons en pj

Je dois remplir la feuille Saisie Dons et pour cela je dois savoir si le contact est déjà existant

Je lance la recherche via une macro Chercher contact dans la feuille Liste Contacts

Une boite de dialogue s’affiche pour rentrer le nom (Ex : Dupont)

  • S’il ne trouve pas ilmet un msg «Contact inexistant, veuillez créer nouveau contact »
  • Sinon il copie la ligne qui contient le nom de A à H et la colle en transposé dans la cellulle F3 de la feuille Saisie dons
Quelle est la syntaxe pour lui dire :

T’as trouvé le nom (Ex : Dupont) copie la ligne qui contient le nom Dupont de A à H et colle la en transposé dans la cellulle F3 de la feuille Saisie dons

Pour l’instant je copie manuelle la ligne (A ;H) du nom trouvé

J’espère que vous avez compris mon problème

Merci d’avance de vos retours
 

Pièces jointes

  • Test selection cellule.xlsm
    26 KB · Affichages: 5

Dranreb

XLDnaute Barbatruc
Avez vous essayé mon classeur ?
Il suffit de taper le début du nom s'il existe pour avoir la fiche.
Il est assez facile d'ajouter un bouton qui la verse dans l'autre feuille
Ce serait quelque chose comme WshDon.[E3:E10].Value = WorksheetFunction.Transpose(TVL)
 

Alanrabe69

XLDnaute Nouveau
Avez vous essayé mon classeur ?
Il suffit de taper le début du nom s'il existe pour avoir la fiche.
Il est assez facile d'ajouter un bouton qui la verse dans l'autre feuille
Ce serait quelque chose comme WshDon.[E3:E10].Value = WorksheetFunction.Transpose(TVL)
Bonjour Dranreb
Merci d'avoir pris du temps pour le faire
Mais mon problème n'est pas vraiment la consultation mais de pouvoir sélectionner la plage (A;H) de la du nom trouvé (une variable) pour la copier et la coller dans une autre feuille
Variable = ref1 dans l'exemple que j'ai mis dans ma macro du fichier "Test sélection cellule.xlsm"
 

Dranreb

XLDnaute Barbatruc
C'est de la consultation puisque vous cherchez un nom.
Et comme dit quand une ligne est isolée, ses valeurs sont dans le tableau dynamique 'TVL (Tableau des Valeurs de la Ligne) et avec un bouton vous pourrez les verser où vous voulez.
 

Alanrabe69

XLDnaute Nouveau
Je ne connais pas du tout le tableau dynamique 'TVL !
je cherche le code : "Trouver le nom Dupont dans la feuille Contacts et copier la ligne qui contient ce nom de A à H et la coller en transposé dans la cellule F3 de la feuille Saisie dons"
 

Dranreb

XLDnaute Barbatruc
Regardez la programmation de l'UserForm, il est déclaré en tête, en dernier, dans une instruction Private :
VB:
Private WithEvents CLs As ComboBoxLiées, CAs As ControlsAssociés, LCou As Long, TVL()
Pour une ligne existante trouvée il est initialisé dans la Private Sub CLs_BingoUn :
VB:
TVL = CLs.Lignes(LCou).Range.Value
CLs.Lignes(LCou).Range représente la plage de la ligne trouvée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir Alanrabe69, Bernard,

Bernard pensais que vous vouliez des choses compliquées alors restons simples :
VB:
Sub Chercher_contact()
Dim ref As String, i As Variant
ref = InputBox("Entrer le Nom ")
If ref = "" Then Exit Sub
With Sheets("Liste contacts")
    i = Application.Match(ref, .[C:C], 0)
    If IsError(i) Then MsgBox "'" & ref & "' non trouvé...": Exit Sub
    Sheets("Saisie Dons").[F3:F10] = Application.Transpose(.Range("A" & i).Resize(, 8))
End With
End Sub
A+
 

Pièces jointes

  • Test selection cellule(1).xlsm
    27.2 KB · Affichages: 3

Dranreb

XLDnaute Barbatruc
Ce n'est quand même pas compliqué à utiliser, et ça peut aussi servir à mettre à jour la base Contacts
En ajoutant ça dans la Sub BingoUn la ligne est systématiquement copiée :
VB:
CLs.Lignes(LCou).Range.Copy
Mais s'il s'agit plutôt de la coller systématiquement transposée en E3:E10 de l'autre feuille il vaudrait mieux :
Code:
WshSaisDons.[E3:E10].Value = WorksheetFunction.Transpose(TVL)
À supposer bien sûr que WshSaisDons soit le nom donné à l'objet Worksheet qui représente la feuille "Saisie dons"
 

Pièces jointes

  • CLsCAsContacts.xlsm
    161 KB · Affichages: 3
Dernière édition:

Alanrabe69

XLDnaute Nouveau

, Bernard,

Bernard pensais que vous vouliez des choses compliquées alors restons simples :
VB:
Sub Chercher_contact()
Dim ref As String, i As Variant
ref = InputBox("Entrer le Nom ")
If ref = "" Then Exit Sub
With Sheets("Liste contacts")
    i = Application.Match(ref, .[C:C], 0)
    If IsError(i) Then MsgBox "'" & ref & "' non trouvé...": Exit Sub
    Sheets("Saisie Dons").[F3:F10] = Application.Transpose(.Range("A" & i).Resize(, 8))
End With
End Sub
A+
Bonjour XLDbaute Barbatruc
Merci bien !
C'est exactement ce qu'il me fallait

Alanrabe69


 

Alanrabe69

XLDnaute Nouveau
Ce n'est quand même pas compliqué à utiliser, et ça peut aussi servir à mettre à jour la base Contacts
En ajoutant ça dans la Sub BingoUn la ligne est systématiquement copiée :
VB:
CLs.Lignes(LCou).Range.Copy
Mais s'il s'agit plutôt de la coller systématiquement transposée en E3:E10 de l'autre feuille il vaudrait mieux :
Code:
WshSaisDons.[E3:E10].Value = WorksheetFunction.Transpose(TVL)
À supposer bien sûr que WshSaisDons soit le nom donné à l'objet Worksheet qui représente la feuille "Saisie dons"
Bonjour Dranreb
Merci pour tes propositions mais à mon niveau c'est encore compliqué
Comme je disais je ne connais pas du tout le tableau dynamique TVL, mais j'ai noté ta solution quand j'utiliserai le TVL
Encore une fois merci pour le temps que t'as passé pour me trouver une solution !

Alanrabe69
 

Statistiques des forums

Discussions
311 721
Messages
2 081 929
Membres
101 843
dernier inscrit
Thaly