Boucle non fonctionnellle
Résolu/Fermé
GermPeru
Messages postés
172
Date d'inscription
mercredi 7 décembre 2016
Statut
Membre
Dernière intervention
27 mars 2018
-
1 févr. 2017 à 17:36
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 3 févr. 2017 à 16:42
GermPeru Messages postés 172 Date d'inscription mercredi 7 décembre 2016 Statut Membre Dernière intervention 27 mars 2018 - 3 févr. 2017 à 16:42
1 réponse
f894009
Messages postés
16904
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2023
1 678
1 févr. 2017 à 18:47
1 févr. 2017 à 18:47
Bonjour,
La deja, y a qu'une feuille !
ma boucle ne prends pas en compte
Vous bouclez sur des colonne, pas sur des lignes
usuario la valeur de la derniere ligne de la colone E.
Par quelle miracle, car du point de vu du code vois pas comment ou vous ne nous dites pas tout?
La deja, y a qu'une feuille !
ma boucle ne prends pas en compte
Vous bouclez sur des colonne, pas sur des lignes
usuario la valeur de la derniere ligne de la colone E.
Par quelle miracle, car du point de vu du code vois pas comment ou vous ne nous dites pas tout?
1 févr. 2017 à 19:16
Dim i As Integer i = Sheets("Historico").Cells(Rows.Count, 1).End(xlUp).Row + 1 ' autres valeur non utiles a la question... ThisWorkbook.Sheets("Historico").Cells(i, 16) = UsuarioEnsuite vous me dites que je boucle sur des colones, je ne suis pas sur de moi pourtant je boucle avec DerniereLigneHistorique qui est definit en .row; donc je pensais boucler a partir de ma derniere ligne puis remonter... ou alors je dois mettre un .count; et non .row ou les 2... un peu perdu
DerniereLigneHistorique = Sheets("HISTORIQUE_ACCES").Range("B4").End(xlDown).RowDu coup je voudrais que lorsque ds ma colone B ma derniere valeur est "CONEXIÓN" asigné a usuario la valeur de ma colone E de la meme ligne.
Jéspere avoir était plus clair dans mon pb.
Merci du temps consacré f894009 :)
1 févr. 2017 à 20:04
k dans boucle pour cells(2,k) c'est la colonne pas la ligne
1 févr. 2017 à 20:26
Je n'avez pas saisi a ma premiere lecture.
Mon pb apres etait qu'il mindiquait en usuario la premiere valeur de la colone et non la derniere, jái donc interverti les donnees de ma boucle.
Dim k As Integer DerniereLigneHistorique = Sheets("HISTORIQUE_ACCES").Range("B4").End(xlDown).Row Acceso = Sheets("HISTORIQUE_ACCES").Range("B4").End(xlDown).Value If Acceso <> "CONEXIÓN" Then For k = 4 To DerniereLigneHistorique Step 1 If Sheets("HISTORIQUE_ACCES").Cells(k, 2).Value = "CONEXIÓN" Then Usuario = Sheets("HISTORIQUE_ACCES").Cells(k, 5).Value End If Next k Else Usuario = Sheets("HISTORIQUE_ACCES").Range("B4").End(xlDown).Offset(0, 3).Value End IfJ´ai donc une question est ce qu'il est possible de bloquer le code lorsqu´il trouve la valeur indiqué et nnon qu´il balaye toute la colone, je pense a ca pour optimiser la lecture du code au cas ou le code fasse 1000 lignes.
Dans tous les cas merci f894009
Modifié par pijaku le 2/02/2017 à 08:09
Si une seule occurrence de "CONEXION" en colonne 2 de la feuille HISTORIQUE_ACCES, utilise la méthode find plutôt que de boucler sur toutes les lignes.
Dim Trouve As Range With Sheets("HISTORIQUE_ACCES") Acceso = .Range("B4").End(xlDown).Value If Acceso <> "CONEXIÓN" Then Set Trouve = .Columns(2).Cells.Find("CONEXIÓN") If Trouve Is Nothing Then Usuario = .Range("B4").End(xlDown).Offset(0, 3).Value Else Usuario = Trouve.Offset(0, 3).Value End If End If End WithEDIT : sinon, pour ta question, il convient d'utiliser Exit For pour sortir d'une boucle :
For k = 4 To DerniereLigneHistorique Step 1 If Sheets("HISTORIQUE_ACCES").Cells(k, 2).Value = "CONEXIÓN" Then Usuario = Sheets("HISTORIQUE_ACCES").Cells(k, 5).Value Exit For End If Next 'le Exit For t'amène iciou Exit Sub pour quitter une procédure :
If Sheets("HISTORIQUE_ACCES").Cells(k, 2).Value = "CONEXIÓN" Then Usuario = Sheets("HISTORIQUE_ACCES").Cells(k, 5).Value Exit Sub End If2 févr. 2017 à 13:29
Dans mon cas il y a plusieurs fois le mot "CONEXIÓN", mais je voulais juste le dernier de la colone, donc si je pars de la fin de la colone puis si je remonte en utilisant exit for ca devrait fonctionner. J essaie de suite!!
Merci pour ces precieuses informations qui aide vachement a la comprehension de la logique pour créer un code!