Macro excel : chercher valeur de cellules
Résolu/Fermé
A voir également:
- Macro excel : chercher valeur de cellules
- Liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Formule excel - Guide
- Macro word - Guide
- Si et excel - Guide
11 réponses
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)
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)
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
2 juil. 2008 à 09:22
2 juil. 2008 à 09:22
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+
Les essais effectués supprime les valeurs cherchées
Montre la macros qui efface les données, ont pourra peut-être la corrigé.
A+
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)
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)
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 juil. 2008 à 11:14
3 juil. 2008 à 11:14
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
https://www.cjoint.com/
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
https://www.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
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.
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.
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
>
Pawn
3 juil. 2008 à 12:13
3 juil. 2008 à 12:13
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.
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.
Pawn
>
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
3 juil. 2008 à 13:23
3 juil. 2008 à 13:23
https://www.cjoint.com/?hdnwihiavW
Tu trouvera un classeur avec les exemples, j'espere que sa ira.
Merci
Tu trouvera un classeur avec les exemples, j'espere que sa ira.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
2 juil. 2008 à 20:16
2 juil. 2008 à 20:16
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+
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+
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 ^^'
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 ^^'
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 juil. 2008 à 10:36
3 juil. 2008 à 10:36
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 ?
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 ?
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.
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.
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
3 juil. 2008 à 20:05
3 juil. 2008 à 20:05
Ca vaux pas la peine que je remette les classeur,copie la macro ci-dessous DANS UN MODULE (pas un module de feuille)
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 ?
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 ?
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
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
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
5 juil. 2008 à 06:55
5 juil. 2008 à 06:55
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.
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.