Copier une partie de ligne

Bonjour à tous,

En lisant le titre, vous l'avez sans doute compris, je suis une novice en vba! Et j'aurais grand besoin de vos lumières. j'ai une liste déroulante dans ma cellule B2, où je peux choisir le nom d'un client... (Cette liste déroulante va donc grandir).

Voilà mon idée/mon besoin: quand je choisis "Mr X" dans la cellule B2 et que j'appuie sur un bouton "visualiser", j'aurais besoin que la macro aille rechercher le nom "Mr X" dans la colonne J et copie la ligne correspondante et située à droite (entre K et BH) pour venir la coller en K3

J'arrive à trouver le nom dans la colonne J mais je ne sais pas comment demander à excel de copier ce qui est à droite...Ci-dessous le début du code... Si vous pouvez m'aider, ce serait super!

Merci d'avance.

Dim trouve As Range, Plagederecherche As Range
Dim Valeur_Cherchee As Variant

Valeur_Cherchee = Range("b2")
Set Plagederecherche = Columns(10)
Set trouve = Plagederecherche.Cells.Find(what:=Valeur_Cherchee, Lookat:=xlWhole)
If Not (IsEmpty(Range("B2"))) Then
Else
MsgBox "Veuillez saisir un nom dans la case dédiée (B2)"
Exit Sub
End If

If trouve Is Nothing Then
MsgBox " n'est pas présent dans la base de données. Réessayer avec une autre orthographe "
Else
adressetrouvee = trouve.Address
Range(adressetrouvee).Select

Bonjour,

Voici un essai :

Sub Recup() 

with activesheet
    if application.countif(.Columns(10), .range("B2").value) > 0 then 'si B2 est trouvé dans colonne 10 (J) -> equivalent NB.SI
        ligne = application.match(.range("B2").value, .columns(10), 0) 'ligne vaut position corresp. du premier B2 dans J -> EQUIV
        .range("K3").resize(, 50).value = .range("K:BH").rows(ligne).value 'K3 retaillé en largeur à 50 colonnes prend valeurs K:BH sur la ligne obtenue
    else
        MsgBox " n'est pas présent dans la base de données. Réessayer avec une autre orthographe "
    end if
end with

End sub

Mais c'est typiquement le genre de problèmes qu'il faut résoudre avec des formules. D'ailleurs, j'en utilise ici (NB.SI et EQUIV)...

Cdlt,

Bonjour 3GB,

Ça marche parfaitement.... C est génial... Je ne suis pas suffisamment aguerrie pour tout comprendre... Je vais regarder ça de plus près !

Merci beaucoup !

👏👏👏👏

Je vous en prie !

J'ai mis des petits commentaires, je peux développer si vous voulez.

Bonne soirée,

Bonjour,

Merci encore, j'ai saisi...

Et tenté de le mettre en pratique pour la formule Nb.Si:

génial... Ça je garde !!!

Si j'abuse un peu, Pourrais -tu m'indiquer ce qu'il faut noter pour faire une formule nb.si.ens en macro stp ou me dire où trouver cette reponse ? ... Je m'explique dans 1 ligne ou 1 colonne (ca dépend des tableaux) j'ai des "conditions" et dans la ligne/colonne adjacente une formule nb.si.ens à 3 conditions (les premières sont toujours identiques, la dernière correspond à la condition indiquée)...

Encore un grand merci pour ton aide et tes explications.

A bientôt

Bonjour,

Il faut utiliser la fonction countifs (équivalent anglais de NB.SI.ENS) :

resultat  = application.countifs(plage1, critere1, plage2, crit2, ....)

Presque toutes les fonctions Excel sont utilisables dans le code mais l'utilisation n'est pas forcément la même (je crois que la plupart des calculs matriciels sont impossibles).

Sinon, il est possible d'utiliser la fonction evaluate :

resultat = Evaluate("COUNTIFS(A1:A10;X1;B1:B10;X2)")

Son utilisation est moins évidente car on ne rentre pas directement des variables mais une chaine de caratères. Pour insérer une variable, il faut concaténer :

resultat = Evaluate("COUNTIFS(A1:A10;" & var1 & ";B1:B10;" & var2 & ")")

Ce sont des variables de type string (ici qui représentent l'adresse d'une cellule). Il est possible d'avoir d'autres types qui seront, par la concaténation, convertis en string, mais on ne peut pas utiliser de variables de type range.

Cdlt,

Merci ! Mille mercis ! 👏👏👏👏👌👌👌

Bonne soirée

Rechercher des sujets similaires à "copier partie ligne"