Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Macro excel : chercher valeur de cellules

Pawn, le mercredi 2 juillet 2008 à 09:20:42
Bonjour,

Je souhaite saisir une valeur contenue dans une cellule( Fonction copier ),
rechercher cette valeur dans une plage de cellules d'un autre classeur afin
de sélectionner une partie de la ligne située 7 cases à droite de cette cellule
contenant la bonne valeur pour ensuite copier cette nouvelle slection.
La nouvelle selection effectuée doit ensuite
être coller dans le premier classeur.
Elle doit être lancée par une MACRO.
Les essais effectués supprime les valeurs cherchées.

Pouvez vous m'indiquer quel est le Sub de MACRO pour obtenir le bon résultat ?

Merci à tous

ps : Excel 2003
Configuration: Windows XP
Internet Explorer 6.0
Répondre à Pawn  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le mercredi 2 juillet 2008 à 09:22:55
Bonjour,
Les essais effectués supprime les valeurs cherchées
Montre la macros qui efface les données, ont pourra peut-être la corrigé.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Répondre à lermite222

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le mercredi 2 juillet 2008 à 12:00:23
au cas ou ...

Dim i As Integer

Windows("classeur1").Activate
Worksheets("feuil1").Activate

For i = 6 To 2500

n = n + 1

Cells(i, 3).Value = Empty '(Si je retire value sa ne fonctionne plus)
valcherche = Cells(B & n).Value

Windows("Classeur2").Activate
Worksheets("Feuil1").Activate

If Cells(i, 3).Value = valcherche Then

End If
Next i

Range(Cells(i, 8), Cells(i, 36)).Select
Selection.Copy


Windows("classeur1").Activate
Worksheets("feuil1").Activate

Range(Cells(i, 7), Cells(i, 35)).Select
ActiveSheet.Paste '(me colle une seul ligne)
Répondre à Pawn

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le mercredi 2 juillet 2008 à 09:46:23
Merci Lermite222,
la voici.

Dim i As Integer

Windows("classeur1").Activate
Worksheets("feuil1").Activate

For i = 6 To 2500

n = n + 1

Cells(i, 3).Value = Empty '(Si je retire value sa ne fonctionne plus)
valcherche = Cells(B & n).Value

Windows("Classeur2").Activate
Worksheets("Feuil1").Activate

If Cells(i, 3).Value = valcherche Then

End If
Next i

Range(Cells(i, 8), Cells(i, 36)).Select
Selection.Copy


Windows("classeur1").Activate
Worksheets("feuil1").Activate

Range(Cells(i, 7), Cells(i, 35)).Select
ActiveSheet.Paste '(me colle une seul ligne)
Répondre à Pawn

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le mercredi 2 juillet 2008 à 11:34:29
un petit Up pour evité un repost
Répondre à Pawn

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le mercredi 2 juillet 2008 à 20:16:14
bonjour,
quelque petit problèmes que je comprend pas...
Dim i As Integer

Windows("classeur1").Activate
Worksheets("feuil1").Activate

For i = 6 To 2500
'Pourquoi un 2ém compteur
n = n + 1

Cells(i, 3).Value = Empty '(Si je retire value sa ne fonctionne plus)
Empty =Rien donc tu vide la cellule
valcherche = Cells(B & n).Value 'Où est la valeur de b

Windows("Classeur2").Activate
Worksheets("Feuil1").Activate

If Cells(i, 3).Value = valcherche Then
qu'est-ce qu'ont fait ?
End If
Next i

Range(Cells(i, 8), Cells(i, 36)).Select
Selection.Copy


Windows("classeur1").Activate
Worksheets("feuil1").Activate

Range(Cells(i, 7), Cells(i, 35)).Select

ActiveSheet.Paste '(me colle une seul ligne)
Explique déjà ,ca..
A+ L'expérience instruit plus sûrement que le conseil. (André Gide)  
Répondre à lermite222

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le jeudi 3 juillet 2008 à 09:38:14
Bonjour Lermite222

Dim i As Integer

Windows("classeur1").Activate
Worksheets("feuil1").Activate

For i = 6 To 2500
'Pourquoi un 2ém compteur ==> 2 Fichiers avec un nombre different de ligne. Au debut je voulais faire i = 6 to n (si insertion de ligne)
n = n + 1

Cells(i, 3).Value = Empty '(Si je retire value sa ne fonctionne plus)
Empty =Rien donc tu vide la cellule ==> je pensais à compte jusqu'à ligne vide
valcherche = Cells(B & n).Value 'Où est la valeur de b ===> B c'est la colonne

Windows("Classeur2").Activate
Worksheets("Feuil1").Activate

If Cells(i, 3).Value = valcherche Then
qu'est-ce qu'ont fait ? ===== >Prend la valeur de la cellule pour la comparer avec l'autre classeur si identique il me copie une partie de la ligne.
End If
Next i

Range(Cells(i, 8), Cells(i, 36)).Select
Selection.Copy


Windows("classeur1").Activate
Worksheets("feuil1").Activate

Range(Cells(i, 7), Cells(i, 35)).Select

ActiveSheet.Paste '(me colle une seul ligne)


PS : Je débute en VBA ^^'
Répondre à Pawn

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le jeudi 3 juillet 2008 à 10:36:02
Maintenant ont va pouvoir commencer le débogage...Mais reste quelques points obscures...
explique où et comment tu trouve - Valcherche
D'une manière générale essaye d'expliquer plus clairement ce que tu veux faire, avec ta macro c'est incompréhensible.
Tu copie de Classeur? à Classeur?.. 'là je crois que c'est du 1 au 2
Tu parle d'ajouter des lignes mais je vois ca nulle part ? L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Répondre à lermite222

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le jeudi 3 juillet 2008 à 11:00:03
La macro d'ajout de ligne à été faite il y a 1 mois, c'etait juste pour donner une info : les lignes ne sont pas fixe.

pour Valcherche je pensais prendre la valeur de la cellule cells(B,i)
d'où le valcherche = Cells(B & i).Value

Je copie de classeur2 ("H" & n & " : " & "AJ" & n) à classeur 1 ("G" & i & ":" & "AI" & i).
Je ne sais pas si les 2 compteurs sont vraiment utile.
Répondre à Pawn

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le jeudi 3 juillet 2008 à 11:14:57
C'est dur a comprendre...
Copie cette macro et dit-moi si elle s'arrète sur le stop. Si j'ai compris, tu prend une cellule du classeur 1 colonne B (2) et tu la recherche dans le classseur 2 à la colonne C (3)
Si c'est comme ca, la macro devrait s'arrèter dés qu'il y a concrdance.
Si c'est pas ca met tes 2 classeur sur Cjoint
http://cjoint.com/

Sub CopieCell()
Dim FL1 As Worksheet
Dim FL2 As Worksheet
Dim i As Long, e As Long
Dim Valcherche As Variant
    Set FL1 = Workbooks("classeur1").Worksheets("feuil1")
    Set FL2 = Workbooks("classeur2").Worksheets("feuil1")
    
    'Pour aller jusqu'a la dernière ligne renseignée.
    For i = 6 To FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row
       'Valcherche = FL1.Cells(i, 2).Value 'Pas nécessaire.
        For e = 1 To FL2.Range("A1").SpecialCells(xlCellTypeLastCell).Row
            If FL2.Cells(e, 3) = FL1.Cells(i, 2).Value Then
            Stop
        Next e
    Next i
End Sub

L'expérience instruit plus sûrement que le conseil. (André Gide)  
Répondre à lermite222

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le jeudi 3 juillet 2008 à 11:43:19
Il s'arrete à next e.

Je ne peux pas envoyer les fichiers ils sont confidentiels :s sa complique la chose.
il ne trouve pas de concordance.

Je ne vois pas de compteur i et e pour incrementer les cellules

le step by step (F8) ne passe pas.

je vais essayer de faire rapidement des fichiers du meme type sur quelques ligne.
Répondre à Pawn

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le jeudi 3 juillet 2008 à 12:13:29
Ce sont les boucles i et e qui incrémente les variables.
Et pour les fichiers, OK met quelques lignes, les même noms, les même feuilles, et avec un exemple du résultat souhaiter en le notant pour que je sache ce que tu veux.
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Répondre à lermite222

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le jeudi 3 juillet 2008 à 13:23:56
http://cjoint.com/?hdnwihiavW

Tu trouvera un classeur avec les exemples, j'espere que sa ira.

Merci
Répondre à Pawn

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le jeudi 3 juillet 2008 à 20:05:49
Ca vaux pas la peine que je remette les classeur,copie la macro ci-dessous DANS UN MODULE (pas un module de feuille)
Sub CopieCell()
Dim FL1 As Worksheet
Dim FL2 As Worksheet
Dim i As Long, e As Long
Dim Valcherche As Variant
   ' Set FL1 = Workbooks("classeur1").Worksheets("feuil1")
   ' Set FL2 = Workbooks("classeur2").Worksheets("feuil1")
   
   'Pour le test dans le classeurs envoyer...
   Set FL1 = Workbooks("Pour-Macro.xls").Worksheets("Classeur1   Feuil1")
   Set FL2 = Workbooks("Pour-Macro.xls").Worksheets("Classeur2    Feui 2")
   
    'Pour aller jusqu'a la dernière ligne renseignée.
    For i = 7 To FL1.Range("B1").SpecialCells(xlCellTypeLastCell).Row
        For e = 6 To FL2.Range("B1").SpecialCells(xlCellTypeLastCell).Row
            If FL2.Cells(e, 2) = FL1.Cells(i, 3).Value Then
                FL2.Range(Cells(e, 4), Cells(e, 7)).Copy FL1.Cells(i, 4)
            End If
        Next e
    Next i
End Sub

Reste une chose que j'ai pas compris, la colonne avec les ok et nok, elle sert à quoi ?
Et toutes les données sont toujours recopiées ou bien uniquement cells qui ne sont pas encore actualisées ?

L'expérience instruit plus sûrement que le conseil. (André Gide)  
Répondre à lermite222

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le vendredi 4 juillet 2008 à 15:34:08
Bonjour Lermite222,

j'ai testé ta macro et elle ne passe pas, mais j'ai chercher encore de mon coté et j'ai réussi a copier.
L'actualisation je sais pas faire.
Si un la cible change de place je vois pas comment l'actualisé.
Les Ok et nok, elle ne sert a rien c'est une colonne que j'ai rajouté pour ciblé les endroits à copier/coller.

Comment copier que les cellules qui on été actualisé ??

Pour infos :

Sub CopCol()

'Lance la mise à jour

Windows("Classeur1.xls").Activate
Sheets("Feuil1").Activate
lignemaxC1 = 5
Do
lignemaxC1 = lignemaxC1 + 1
Loop Until Cells(lignemaxC1, 3).Value = ""

Windows("Classeur2.xls").Activate
Sheets("Details DIMat-X").Activate
lignemaxC1 = 5
Do
lignemaxC2 = lignemaxC2 + 1
Loop Until Cells(lignemaxC2, 2).Value = ""

For i = 6 To lignemaxC1 - 1
Windows("Classeur1.xls").Activate
Sheets("Feuil1").Activate
Cells(i, 3).Select
valeurchercher = ActiveCell.Value

trouve = False
ligne = 100
Do
Windows("Classeur2.xls").Activate
Sheets("Details DIMat-X").Activate
Cells(ligne, 2).Select
If Selection.Value = valeurchercher Then
trouve = True
Range(Cells(ligne, 8), Cells(ligne, 37)).Select
Selection.Copy
Windows("Classeur2.xls").Activate
Sheets("Feuil1").Activate
Cells(i, 7).Select
ActiveSheet.Paste
GoTo suivantC1
End If
ligne = ligne + 1
Loop Until ligne = lignemaxC2
If trouve <> True Then
MsgBox ("non trouvée !")
End If
suivantC1:

Next i
Range("B5").Select

End Sub
Répondre à Pawn

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le samedi 5 juillet 2008 à 06:55:01
Si la macro "ne passe pas" c'est que tu ne l'a pas tester sur le fichier que tu m'a envoyer, je l'ai tester plusieurs fois et elle fonctionnait parfaitement.
Attention aux nom des feuilles, plutôt que de les écrire fait un copier/coller, car une erreur est vite arrivée, regarde dans le classeur envoyé, il y a une erreur dans le 2ém nom... et si j'avais pas fait copier/coller la macro se serrait plantée. L'expérience instruit plus sûrement que le conseil. (André Gide)  
Répondre à lermite222

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Pawn, le lundi 7 juillet 2008 à 11:41:15
Ok, un grand merci!!

je vais regarder sa ^^.

Bonne journée
Répondre à Pawn

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Pawn, le mercredi 9 juillet 2008 à 10:41:23
Salut,

La demande est résolue, je n'arrive pas à changer le statut.

Encore merci!
Répondre à Pawn

Résultats pour Macro excel : chercher valeur de cellules

Macro Excel recherche multiple (Résolu) Bonjour, J'aimerais écrire une macro excel qui me permettrait de vérifier si le contenu de ma cellule appartient à une liste de valeur prédéfinie ou est présente dans une plage d'autres cellules précise. Et si oui de faire telle ou telle... www.commentcamarche.net/forum/affich-3623448-macro-excel-recherche-multiple
Macro excel Extraire prix dans texte (Résolu) Bonjour, Je voudrai faire une macro excel qui me permette d'extraire un prix dans un phrase pour pourvoir ensuite le comparer a la valeur d'une autre cellule. - Est-il possible d'extraire selement les caractères numériques d'une... www.commentcamarche.net/forum/affich-6521911-macro-excel-extraire-prix-dans-texte

Résultats pour Macro excel : chercher valeur de cellules

Macro excel Sélection plage (Résolu)Bonjour, Je souhaite faire une macro excel pour un copier-coller d'une sélection de quelques cellules en fonction d'où se trouve le curseur. Par exemple : le curseur se trouve en C11, je veut faire un copier-coller spécial valeur de C11 à... www.commentcamarche.net/forum/affich-6079260-macro-excel-selection-plage
Lancement automatique de macro excel (Résolu)Bonjour à tous, J'ai 3 questions pour faire fonctionner des macros Excel en automatique. 1 - Peut-on lancer automatiquement selon un timer une macro excel ? 2 - Peut-on lancer automatiquement une macro par le contenu d'une cellule ? le... www.commentcamarche.net/forum/affich-3240803-lancement-automatique-de-macro-excel
Macro excel envoi email avec piéce jointe (Résolu)Bonjour , je suis nouveau stagiaire . Ma question est comment faire pour creer une macro excel qui permet d'envoyer automatiquement un mail (via outlook) avec classeur excel joint. La macro doit ouvrir la feuille excel à mettre à jour (adr de la... www.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe