Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

yannoch

XLDnaute Junior
Bonjour à tous,

je sais que je ne suis pas très clair dans l'intitulé de mon sujet donc je vais mettre en place le contexte avec un exemple de fichier, ça sera plus simple.

J'ai un fichier avec plusieurs colonnes,
en A, j'ai des valeurs
en B, des résultats correspondants à ces valeurs
de C à D (voir plus), des critères de recherches.
Ce fichier pouvant contenir plusieurs centaines de lignes et une quinzaine de colonnes, je cherche à simplifier son utilisation qui est de la simple consultation et si nécessaire un remplacement de résultat.
Donc pour commencer, dans une cellule, je tape le critère,
avec des formules matricielles, j'affiche à droite la valeur et le résultat correspondant.
Encore à droite, j'ai fait une liste déroulante correspondant à la colonne des résultats.

J'aimerais, grâce à une macro, copier le résultat que j'ai sélectionné dans cette liste déroulante (qui n'est pas fixe au passage, je peux mettre un nouveau résultat manuellement), et remplacer le résultat précédent dans la plage de données en face de la valeur correspondante.

en pièce jointe, mon fichier.

Je ne sais pas si j'ai été très clair, j'ai commencé à chercher sur le forum afin de voir s'il existe déjà un exemple (très probablement) mais ce n'est pas simple à trouver.

Merci par avance pour vos réponses.
 

Pièces jointes

  • exemple.xls
    21 KB · Affichages: 66
  • exemple.xls
    21 KB · Affichages: 71
  • exemple.xls
    21 KB · Affichages: 72

Bebere

XLDnaute Barbatruc
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

bonjour yannoch
avec bouton ou sans bouton(voir code commenté)
clic droit onglet,choisir visualiser code
à bientôt
 

Pièces jointes

  • exempleyannoch.xls
    24 KB · Affichages: 80
  • exempleyannoch.xls
    24 KB · Affichages: 76
  • exempleyannoch.xls
    24 KB · Affichages: 79

yannoch

XLDnaute Junior
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

euh, au final, ça bug un peu.
Si je tape 8468, code sur la dernière ligne, je sélectionne le résultat pom par exemple, ça marche.
Si tout de suite, je tape le code 4365 (3ème lignes), je sélectionne un autre résultat, et là il modifie le résultat de la ligne 2 au lieu de la ligne 3.
Si je rentre le code 468, que je laisse le résultat déjà selectionné juste avant, là il me modifie la bonne cellule.
Ca marche une fois sur deux :/
 

Bebere

XLDnaute Barbatruc
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

Yannoch
mis une liste validation pour code et décaler le tout vers la droite
changer code bouton et code feuille
à bientôt
 

Pièces jointes

  • exempleyannoch.xls
    24.5 KB · Affichages: 68
  • exempleyannoch.xls
    24.5 KB · Affichages: 67
  • exempleyannoch.xls
    24.5 KB · Affichages: 65

yannoch

XLDnaute Junior
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

Merci Bebere.
Mais du coup, ça me limite qu'à une seule colonne pour les Codes alors que j'en ai 2 (14 sur mon fichier de travail).
Avec les recherches que j'ai effectué, j'ai remplacé la ligne :
Set Cel = Columns(3).Find([E2])
par
Set Cel = Range("C5:D11").Find([E2])

Et là ça fonctionne sur mes deux colonnes de Codes.
J'ai fait plusieurs tests et n'ai pas rencontré de bug pour le moment, les corrections que tu as apporté ont corrigé le problème "aléatoire".
Mais il reste encore un petit bug.
Si en ligne 5 j'ai le code 5418, et en ligne 10, le code 54 (quelque soit la colonne).
Je cherche le code 54, il me retourne la bonne valeur, et le bon résultat, je sélectionne mon nouveau résultat, et je remplace, mais au lieu de remplacer la résultat sur la ligne contenant le code 54, il me remplace le résultat sur la ligne du code 5418, parce que le code commende par "54".

Je suis en train de chercher les méthodes du Find, mais si quelqu'un à la réponse, je suis preneur.

Merci encore pour cette deuxième version.
 

yannoch

XLDnaute Junior
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

Bonjour à tous,

je reviens sur cette petite macro pour laquelle je remercie encore Bebere.
J'aurais besoin d'une petite évolution que je n'arrives pas à faire, est-ce qu'on peut y mettre une boucle ?
C-a-d, sur toutes les lignes ou je trouve E2, je souhaite remplacer la cellule de la colonne 2 par H2.
Actuellement, avec le code ci-dessous, il s'arrête à la première occurrence trouvée.

Code:
Private Sub CommandButton1_Click()
Dim Cel As Range
Set Cel = Columns(3).Find([E2], LookIn:=xlValues, lookat:=xlWhole) 'cherche code
If Not Cel Is Nothing Then
l = Cel.Row
Cells(Cel.Row, 2) = Range("H2") 'nouvelle valeur
End If
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

Re,

Bonjour,

tu recherches dans la colonne C et tu remplaces dans la colonne B ??

bonne journée
@+

si c'est le cas...
Code:
Dim c As Range, p As String
With ActiveSheet.Columns(3)
    Set c = .Find(Range("E2").Value, , xlValues, xlWhole, , , False)
    If Not c Is Nothing Then
        p = c.Address
        Do
            c.Offset(0, -1).Value = Range("H2").Value
            Set c = .FindNext(c)
        Loop While c.Address <> p
    End If
End With
 

yannoch

XLDnaute Junior
Re : Macro pour coller le contenu d'une cellule dans une plage à un endroit précis

Merci pour ta réponse Pierrot, mais j'ai une erreur 1004 sur la ligne
Code:
            c.Offset(0, -1).Value = Range("H2").Value

Erreur définie par l'application ou par l'objet.

C'est dû à mon adaptation, j'ai mis columns(1) et ça bloque (avant je souhaitais chercher sur la colonne 3, mais j'ai changé d'avis)
Je pense que c'est un réglage sur le Offset ?

sinon ça marche très bien sauf ce blocage sur la colonne 1
 

Discussions similaires

Statistiques des forums

Discussions
314 492
Messages
2 110 190
Membres
110 695
dernier inscrit
fabriceseka