Copie automatique

nikobell

XLDnaute Nouveau
Bonjour à tous,

Je souhaite à partir d'un classeur contenant 2 feuilles, sélectionner une donnée dans la première feuille, la rechercher dans la 2ème feuille, puis copier la valeur correspondante à cette donnée dans la 1ère feuille.

Pour résumer voici le code sur une cellule:

Code:
 Range("B15").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Cells.Find(What:="a32349", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False).Activate
    Range("C4519").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil1").Select
    Range("D15").Select
    ActiveSheet.Paste

Quelqu'un peut il m'aider à automatiser cela?

Merci d'avance

Nikobell
 

skoobi

XLDnaute Barbatruc
Re : Copie automatique

Re bonjour,

voici un code "allégé" sans les ".Select" qui sont inutile en VBA (le défaut de l'enregistreur de macro):

Code:
Sub test()
valeur = Range("B15").Value
Sheets("Feuil2").Select
Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, 2).Copy Sheets("Feuil1").Range("D15")
End Sub
 

nikobell

XLDnaute Nouveau
Re : Copie automatique

Merci Skoobi!

Maintenant je veux le faire sur toute ma feuille, il me semble que la boucle For est la meilleure solution, en code ca donne ca, mais ca ne marche pas :
Code:
Sub test()
For i = 2 To 10
valeur = Range("B" & i).Value
Sheets("Feuil2").Select
Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, 2).Copy Sheets("Feuil1").Range("D" & i)
Next i
End Sub

Peux tu me dire ce qui ne va toujours pas?

Niko
 

nikobell

XLDnaute Nouveau
Re : Copie automatique

En fait cette boucle fonctionne, toutefois, certaines valeurs recherchées ne sont pas présentes dans ma feuille 2. Comment faire pour que cela affiche un 0 lorsque mes valeurs ne sont pas présentes?
Je pense à un If mais je ne sais pas quelle valeur préciser derrière (null?)
Pour t'illustrer mon propos:
Code:
Sub test()
For i = 1 To 50
Sheets("Feuil1").Select
valeur = Range("B" & i).Value
Sheets("Feuil2").Select
If Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate = null [I]Je veux préciser ici que si la valeur n'existe pas[/I]
Range("D" & i) = 0 [I]Alors on lui attribue 0[/I]
Next i
Else If ActiveCell.Offset(0, 2).Copy Sheets("Feuil1").Range("D" & i)
Next i
End Sub

Merci d'avance pour ton aide

Niko
 

skoobi

XLDnaute Barbatruc
Re : Copie automatique

Re bonsoir,

comme ceci:

Code:
Sub test()
For i = 1 To 50
Sheets("Feuil1").Select
valeur = Range("B" & i).Value
Sheets("Feuil2").Select
[COLOR=Blue][B]Set trouve[/B][/COLOR] = Cells.Find(What:=valeur, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False)
[COLOR=Blue][B]If trouve Is Nothing Then[/B][/COLOR]
Range("D" & i) = 0
[COLOR=Blue][B]Else: [/B][/COLOR]ActiveCell.Offset(0, 2).Copy Sheets("Feuil1").Range("D" & i)
[COLOR=Blue][B]End If[/B][/COLOR]
Next i
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 017
dernier inscrit
annboi19