VBA boucle, recherche cellule vide
Clément
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
Bonjour,
Je demande vos lumières afin d'éclairer les parties sombres d'excel.
Je recherche une boucle qui me permette de scanner une colonne entière jusqu'a la dernière cellule non vide.
Le Hic c'est qu'a l'intérieur de cette colonne se trouve des valeurs et souvent , également des cellules vides.
J'aimerai donc que ma boucle scan la colonne ("E") du worsheets(2) recherche les valeurs min et max , l'affiche dans le worksheets(3) dans la case("D6") pour le max et ("F6") pour le min.
Mais si a l'intérieur de cette colonne se trouve la moindre cellule blanche , au lieu de m'afficher la valeurs max et min on afficherai "default".
Puis après ceci fais on passerai a la colonne suivante et rebelotte et on collerai en ("D7") et ("F7") le min et max ou alors "default" si une autre cellule blanche c'est hissé dans la colonne. Jusqu'à la dernière colonne non vide.
Merci de bien vouloir m'aider car j'avouerai que je test un peu tout et n'importe quoi , sans aucun résultat.
:(
Je demande vos lumières afin d'éclairer les parties sombres d'excel.
Je recherche une boucle qui me permette de scanner une colonne entière jusqu'a la dernière cellule non vide.
Le Hic c'est qu'a l'intérieur de cette colonne se trouve des valeurs et souvent , également des cellules vides.
J'aimerai donc que ma boucle scan la colonne ("E") du worsheets(2) recherche les valeurs min et max , l'affiche dans le worksheets(3) dans la case("D6") pour le max et ("F6") pour le min.
Mais si a l'intérieur de cette colonne se trouve la moindre cellule blanche , au lieu de m'afficher la valeurs max et min on afficherai "default".
Puis après ceci fais on passerai a la colonne suivante et rebelotte et on collerai en ("D7") et ("F7") le min et max ou alors "default" si une autre cellule blanche c'est hissé dans la colonne. Jusqu'à la dernière colonne non vide.
Merci de bien vouloir m'aider car j'avouerai que je test un peu tout et n'importe quoi , sans aucun résultat.
:(
A voir également:
- VBA boucle, recherche cellule vide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Supprimer page word vide - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
- Coeur vide ✓ - Forum Facebook
4 réponses
Ayant de gros problème avec les boucles .
j'analyse très bien ce qu'il faut faire , je savais qu'il fallait faire deux boucles imbriqués mais le problème c'est que je ne sais pas le coder car j'ai commencer le VBA il y'a qu'un petit mois pour un stage d'entreprise.
Je connais les bases du vba mais pour la gestion des boucles je voue avouerai que je suis largué complet.
J'ai trouver comment faire la valeur max et min déja après comment instauré sa dans mes boucles , ou les placer? comment afficher default si une cellule est vide . tout sa reste encore super flou pour moi :(
Si quelqu'un peut m'aider un petit peu :/
j'analyse très bien ce qu'il faut faire , je savais qu'il fallait faire deux boucles imbriqués mais le problème c'est que je ne sais pas le coder car j'ai commencer le VBA il y'a qu'un petit mois pour un stage d'entreprise.
Je connais les bases du vba mais pour la gestion des boucles je voue avouerai que je suis largué complet.
J'ai trouver comment faire la valeur max et min déja après comment instauré sa dans mes boucles , ou les placer? comment afficher default si une cellule est vide . tout sa reste encore super flou pour moi :(
Si quelqu'un peut m'aider un petit peu :/
Bonjour Clément, Bonjour Eric,
Il s'agit ici de faire l'algo adéquat. Si tu ne connais pas la syntaxe VBA, ce n'est pas très grave et pas le plus important, tu trouveras toujours de l'aide pour ça.
Écris ici ton algo en pseudo code, on t'aidera à le traduire en VBA.
;o)
Il s'agit ici de faire l'algo adéquat. Si tu ne connais pas la syntaxe VBA, ce n'est pas très grave et pas le plus important, tu trouveras toujours de l'aide pour ça.
Écris ici ton algo en pseudo code, on t'aidera à le traduire en VBA.
;o)
Merci eric ton code fonctionne après quelques petite modification.Donc un grand merci pour le temps que tu m'a accorder :)
Seul petit problème.
Lorsqu'une colonne est blanche , au lieu de me retourner la valeur mini et maxi ou default , on me retourne "-2,95126654306528E+94"
Est-il possible de supprimez une colonne si celle si est vide a partir de la ligne 2?
Comme sa je n'aurai pas le problème de ""-2,95126654306528E+94"
Merci a vous =)
Seul petit problème.
Lorsqu'une colonne est blanche , au lieu de me retourner la valeur mini et maxi ou default , on me retourne "-2,95126654306528E+94"
Est-il possible de supprimez une colonne si celle si est vide a partir de la ligne 2?
Comme sa je n'aurai pas le problème de ""-2,95126654306528E+94"
Merci a vous =)
Polux à raison, il faut que tu bosses un peu ;-)
Fais-le en pas à pas et regarde la valeur de derlig si la colonne est vide.
Modifie le code en conséquence.
En plus ça t'apprendra comment deboguer (pas à pas, poser des points d'arrets, surveiller des variables, etc).
Assure-toi d'avoir la fenetre 'espion' affichée en bas
eric
Fais-le en pas à pas et regarde la valeur de derlig si la colonne est vide.
Modifie le code en conséquence.
En plus ça t'apprendra comment deboguer (pas à pas, poser des points d'arrets, surveiller des variables, etc).
Assure-toi d'avoir la fenetre 'espion' affichée en bas
eric
Bonjour,
Il te faut 2 boucles imbriquées, 1 pour les colonnes et 1 pour les lignes à l'intérieur d'une colonne.
Pour t'aider à démarrer :
Connaitre la dernière colonne de la ligne 1 :
dercol = [IV1].End(xlToLeft).Column
Connaitre la dernière ligne de la colonne col :
derlig = Cells(65536, col).End(xlUp).Row
eric
Il te faut 2 boucles imbriquées, 1 pour les colonnes et 1 pour les lignes à l'intérieur d'une colonne.
Pour t'aider à démarrer :
Connaitre la dernière colonne de la ligne 1 :
dercol = [IV1].End(xlToLeft).Column
Connaitre la dernière ligne de la colonne col :
derlig = Cells(65536, col).End(xlUp).Row
eric
Difficile de t'aider un petit peu sans y passer 5 jours au fur et à mesure que tu avances....
Voici une façon de traiter le problème, à toi de t'obliger à commenter chaque ligne et à demander pour les lignes que tu ne comprends pas.
Sub minMax() Dim shS As Worksheet, shD As Worksheet Dim dercol As Long, derlig As Long, col As Long, lig As Long Dim cpt As Long, mini As Double, maxi As Double, vide As Boolean Set shS = Worksheets("Feuil2") Set shD = Worksheets("Feuil3") With shS dercol = .[IV1].End(xlToLeft).Column For col = 5 To dercol vide = False mini = 9 ^ 99 maxi = -9 ^ 99 derlig = .Cells(65536, col).End(xlUp).Row For lig = 2 To derlig If .Cells(lig, col) = "" Then vide = True Exit For Else If .Cells(lig, col) < mini Then mini = .Cells(lig, col) If .Cells(lig, col) > maxi Then maxi = .Cells(lig, col) End If Next lig If vide Then shD.[D6].Offset(cpt, 0) = "default" shD.[D6].Offset(cpt, 2) = "default" Else shD.[D6].Offset(cpt, 0) = maxi shD.[D6].Offset(cpt, 2) = mini End If cpt = cpt + 1 Next col End With End Suberic