XL 2016 Recherche ligne par ligne

L

Lucko

Guest
Bonjour,

Voilà mon problème. J'ai 60 lignes (de E18 à E77). Chaque ligne contient 12 numéros. Je veux copier une à la suite de l'autre les 60 lignes sur la rangée E8:p8 afin de pouvoir les comparer à un autre numéro. En utilisant la fonction enregistrement, j'ai obtenu ce code. Lorsque j'arrête, je peux pouvoir recommencer non pas au début de la ligne mais à la ligne suivant l'arrêt. Comme je suis nul en macro, est-ce que l'on peut réduire ce code à quelques lignes? Merci

Sub Rechercheligneparligne()

Range("E18:p18").Select
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E19:p19").Select
Application.CutCopyMode = False
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E20:p20").Select
Application.CutCopyMode = False
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E21:p21").Select
Application.CutCopyMode = False
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Range("R8").Select
End Sub
 
L

Lucko

Guest
J'ai oublié d'inclure le fichier en question. Peut-on, aussi, à partir du modèle fourni ci-joint mettre des critères. Par exemple, loop until... tel numéro corresponde à tel autre ou que la somme d'une ligne égale telle ligne ou qu'un cycle de recherche soit atteint.
 

Pièces jointes

  • Modèle de base.xlsm
    49.6 KB · Affichages: 63

CHALET53

XLDnaute Barbatruc
Bonjour,
Pour réduire le code et intégrer une pause de 5 secondes à chaque ligne

Sub Macro2()
For i = 18 To 77
Range("E" & i & ":p" & i).Select
Application.CutCopyMode = False
Selection.Copy
Range("E8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' Attendre 5 secondes
Application.Wait Time + TimeSerial(0, 0, 5)
' Continuer après la pause
Next i

End Sub


a+
 
L

Lucko

Guest
Bonjour Chalet35,

J'aime l'idée. Toutefois, on dirait que la fonction saute parfois de une à deux lignes. Cela dit, je ne vais pas m'en plaindre puisque cette macro correspond à mes attentes. Après une pause volontaire avec ESC, peut-on reprendre là où on s'est arrêté? Merci.
 

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Merci d'utiliser la mise en page prévue pour les codes :

upload_2016-9-10_16-7-39.png

upload_2016-9-10_16-8-10.png


a++
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir Lucko, CHALET53, JCGL,

Un essai avec défilement qu'on peut stopper puis reprendre. La durée de l'intervalle entre deux affichages est définie par une constante nommée Tempo en début du code au sein de module1. Le code est un peu commenté.

Il y a aussi deux instructions dans la procédure évènementielle Private Sub Workbook_Open() au sein du module de ThisWorkbook.

à noter: le bouton a été renommé "Bouton".

edit: on doit pouvoir ajouter des conditions pour le défilement mais il faudrait énoncer des conditions précises. Dans le fichier fourni, le défilement s'arrête quand on a affiché la ligne n° 77.
 

Pièces jointes

  • Lucko- Modèle de base- v1.xlsm
    51.3 KB · Affichages: 77
Dernière édition:
L

Lucko

Guest
Bonjour ma pomme,

Je viens tout juste de prendre connaissance de ton fichier. Un travail exceptionnel. Est-il possible d'arrêter la recherche quand le plus grand nombre de numéros de A correspond à B, en respectant l'ordre dans la zone de recherche, alors la macro arrête.
 

Pièces jointes

  • Lucko- Modèle de base- v1.xlsm
    50.8 KB · Affichages: 62
L

Lucko

Guest
À partir du fichier, comment traduire en langage VBA

si les numéros contenus entre E16 à G16 = E15 à G16 sont semblables alors arrêt de la macro

J'ai essayé :

If ("e16:g16") = ("e15:g15") then
exit sub
End if

Mais cela ne fonctionne pas
 

Staple1600

XLDnaute Barbatruc
Bonjour à tous

Lucko
Pas une solution à ton problème
Mais une solution à une meilleure lisibilité de tes messages, déjà évoquée par JCGL que je salue au passage dans le message#5, mais que tu ne sembles pas avoir lue.;)
 
Dernière édition:
L

Lucko

Guest
Bonjour Staple1600,

Merci de me rappeler à l'ordre si gentiment... donc je dois entrer le code comme cela:
Code:
If ("e16:g16") = ("e15:g15") then
exit sub
End if

Et non plus en utilisant des fichiers à titre d'exemple?
 

Staple1600

XLDnaute Barbatruc
Re

Tu peux faire les deux
Je disais juste que c'est plus lisible quand on distingue facilement le code VBA du reste du message.

l'idéal à mon sens c'est :
1) un titre explicite
2) un message détaillé dans la discussion qui explique le problème à résoudre
(ce qui permet au lecteur de determiner si la question l'interesse et lui évite de télécharger un fichier pour rien si ce n'est pas le cas)
3) un fichier exemple joint par demandeur dès le premier message
(fichier allégé et anonymisé et sans fioritures: pas d'images de couleur etc..)

Mais çà c'est dans mon monde idéal ;) et comme on le sait tous , ici, sur XLD, c'est le vrai monde ;)

Au fait, il existe aussi un mode Edition qui permet de revenir sur les anciens messages.
Donc pour avoir une discussion tout propre et guillerette, tu peux rajouter des balises CODE partout où tu as du code VBA dans tes messages ;)

Pour revenir à ta question, je laisse mapomme continuer sur le chemin de la résolution.
Car je m'en dois sortir dans le vrai monde pour aller rencontrer quelques vrais gens, dans un vrai champ, tout de chanvre vêtus (salon bio oblige). ;)
Par contre c'est un monde qui n'a rien d'idéal, quand je vois le prix sur les étiquettes en papier recyclé.;)
 
L

Lucko

Guest
Staple1600,

C'est vrai que c'est plus lisible. Comme je m'y connais peu en VBA, je viens sur ce site de temps en temps pour trouver des réponses à mes problèmes avec Excel car il y a ici beaucoup de virtuoses du code VBA. Je ne suis pas au courant de tous les changements apportés à ce forum si exceptionnel. Honte à moi, en fait!
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Lucko, Staple1600,
(...) Est-il possible d'arrêter la recherche quand le plus grand nombre de numéros de A correspond à B, en respectant l'ordre dans la zone de recherche, alors la macro arrête.

C'est quoi A et B ? C'est quoi quand le plus grand nombre de numéros de A correspond à B ?

nota:
j'attends avec impatience le retour de Staple1600 pour qu'il nous apprenne comment coder BIO :D.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
138
Réponses
5
Affichages
137

Statistiques des forums

Discussions
312 372
Messages
2 087 716
Membres
103 651
dernier inscrit
Jonathan Fournier