Résolu VBA-Comparer une ligne à plusieurs autres sur deux cellules

  • Auteur de la discussion LightenTriff
  • Date de début

LightenTriff

Habitué
Bonjour,

Oui Tantal, c'est vrai que Derligne n'a pas besoin d'être dans la boucle.

Je sais Zeb, c'est pas bien d'utiliser Range(...).Select et Selection.Replace. Mais en cherchant sur le net les seuls morceaux de code me permettant de changer ces points en virgules, tout le monde propose cette macro :/
J'ai pas trouvé sans.
 

LightenTriff

Habitué
Je voudrais copier les données de la_ligne dnas ma page "RESULTATS", J'ai essayer de faire ça:
Code:
DerLigneMesure = (Sheets("RESULTATS").Cells(Rows.Count, 1).End(xlUp).Row + 1)
la_ligne.Copy Destination:=Sheets("RESULTATS").Cells(DerLigneMesure, 1)
En méttant Dim la_ligne As Range au dessus du sub dnas la macro de recherche capteur et dans ma macro Valider.

Je sais aps si je fait bien pour partager la variable entre toute les macro, il me semblais avoir vu ca dans un cours. Ca serais le .Copy qui ne serais pas utilisable avec une variable?
 

zeb

Modérateur
Meilleure réponse
De retour de réunion... je réagis à [ulr=http://www.presence-pc.com/forum/id-2877590/vba-comparer-ligne-plusieurs-cellules.html#11403747]ce code[/url].
Pour un grand débutant, c'est pas mal du tout. ;)

M'enfin, pourquoi êtes-vous enragés à utiliser des coordonnées ?
En plus, pour écrire des "AQ" & i !!!
Imagine que ton programme doive itérer des colonnes, tu ferais un For j = "A" To "AQ" ?
En plus, il y a une TRES GRAVE ERREUR (mode paranoïaque ON) dans la déclaration de tes numéros de lignes.
Une feuille, c'est au moins 65536 lignes (version 32bis)?. Tes Integers ne sont donc pas assez grands.
(Bien que je doute que tu ais autant de données ;) )

Regarde, c'est tout bête :
Code:
der_ligne = Worksheets("TEMP").Cells(Rows.Count, 19).End(xlUp)

For Each une_ligne In Worksheets("TEMP").Range(Worksheets("TEMP").Cells(5, 1), Worksheets("TEMP").Cells(Rows.Count, 44).End(xlUp)).Rows
    If la_ligne.Cells(6).Value >= une_ligne.Cells(43).Value And la_ligne.Cells(7).Value <= une_ligne.Cells(44).Value Then
        der_ligne.Offset(1)
        la_ligne.Range(la_ligne.Cells(38), la_ligne.Cells(55)).Copy Destination:=der_ligne.Cells(19)
    End If
Next
 

zeb

Modérateur
Range(...).Select
Selection.Replace ...

Ceci se réduit à :

Range(...).Replace ...

C'est facile quand même !

L'intérêt ? Ne pas faire de sélection, qui est une opération TRES gourmande en ressource.
Une sélection consiste à mettre le focus sur une cellule, une page, un classeur, et à recalculer TOUTE la feuille si nécessaire.
Mets ça dans une boucle et c'est parti pour avoir besoin de ScreenUpdate !!!!

Vu le niveau pour s'en passer, avoue que le jeu en vaut la chandelle !
 

zeb

Modérateur
Pour ton dernier code, essaie de faire directement avec des objets, pas des coordonnées.
 

LightenTriff

Habitué
Bonjour,

J'ai modifié selon tes conseilles Zeb, pour le moment tout fonctionne correctement, je peaufine mes conditions pour que toute les mesures soit prise en compte.

Un grand merci à vous deux, je reviendrais vers vous si jamais un problème se pose sur mon chemin, mais avec ce que vous m'avez donné je devrais me débrouille.

Un grand merci. =)
 

zeb

Modérateur
Tantal et moi, nous nous partagerons les remerciements. :merci:

Moderator dixit : C'est à toi de nous départager. Pour la bonne tenue de ce forum, choisis la meilleure des solutions pour passer le statut du topic à "résolu".
 

LightenTriff

Habitué
Voila qui est fait, après pour la meilleure réponse j'ai mit ta dernière Zeb, mais si quelqu'un a besoin de ce genre de macro, lisez le topic en entier, les solutions sont dans chaque post =).

Encore merci.
 

zeb

Modérateur
Lol. C'est en tant que modo que j'insistais sur la bonne tenue du forum !
Ce pauvre Tantal fait 90% du boulot, moi je me pointe pour faire mon redresseur de tord, et bing, c'est pour bibi la bonne note.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 163
Messages
6 718 608
Membres
1 586 453
Dernier membre
liloual37
Partager cette page
Haut