VBA : saisie en boucle jusqu'à texte atteint
Résolu/Fermé
Evedll
Messages postés
74
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
26 septembre 2023
-
23 oct. 2018 à 22:51
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023 - 24 oct. 2018 à 16:20
Evedll Messages postés 74 Date d'inscription vendredi 6 juillet 2007 Statut Membre Dernière intervention 26 septembre 2023 - 24 oct. 2018 à 16:20
A voir également:
- VBA : saisie en boucle jusqu'à texte atteint
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
3 réponses
M-12
Messages postés
1331
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
8 avril 2023
284
24 oct. 2018 à 06:43
24 oct. 2018 à 06:43
Bonjour,
Teste avec cette macro
Teste avec cette macro
Sub Cherche() Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, Dl%, i% Valeur_Cherchee = "Nombre de règlements total" Set PlageDeRecherche = ActiveSheet.Columns(1) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) Dl = Trouve.Row - 1 For i = 2 To Dl If Cells(i, 1) = "" Then Cells(i, 1) = "-" Next i End Sub
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié le 24 oct. 2018 à 09:02
Modifié le 24 oct. 2018 à 09:02
Bonjour,
M-12, ton code plantera violemment en cas de simple faute de saisie.
Il te faut tester si Trouve est ou non égal à Nothing avant d'utiliser sa propriété Row :
Une autre version, sans boucle, utilisant la méthode SpecialCells :
M-12, ton code plantera violemment en cas de simple faute de saisie.
Il te faut tester si Trouve est ou non égal à Nothing avant d'utiliser sa propriété Row :
Sub Cherche() Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As String, Dl%, i% Valeur_Cherchee = "Nombre de règlements total" Set PlageDeRecherche = ActiveSheet.Columns(1) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) If Not Trouve Is Nothing Then Dl = Trouve.Row - 1 For i = 2 To Dl If Cells(i, 1) = vbNullString Then Cells(i, 1) = "-" Next i Else MsgBox "Pas trouvé " & Valeur_Cherchee End If End Sub
Une autre version, sans boucle, utilisant la méthode SpecialCells :
Option Explicit Sub ChercheV2() Dim Trouve As Range, PlageDeRecherche As Range, Plage As Range Dim Valeur_Cherchee As String Valeur_Cherchee = "Nombre de règlements total" Set PlageDeRecherche = ActiveSheet.Columns(1) Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) If Not Trouve Is Nothing Then On Error Goto Fin 'si aucune cellule vide évite l'erreur 1004 : pas de cellules correspondantes Set Plage = Range("A1:A" & Trouve.Row).SpecialCells(xlCellTypeBlanks) Plage.Value = "-" Else MsgBox "Pas trouvé " & Valeur_Cherchee End If Fin: End Sub
Evedll
Messages postés
74
Date d'inscription
vendredi 6 juillet 2007
Statut
Membre
Dernière intervention
26 septembre 2023
24 oct. 2018 à 16:20
24 oct. 2018 à 16:20
Bonjour,
Merci à vous deux pour votre aide.
Pijaku, je vais garder les deux méthodes et les analyser pour bien les comprendre.
Ca pourra aussi m'aider pour essayer seule une prochaine fois.
Les deux méthodes fonctionnent super bien.
A bientôt peut être pour une prochaine demande
Cordialement
Evelyne
Merci à vous deux pour votre aide.
Pijaku, je vais garder les deux méthodes et les analyser pour bien les comprendre.
Ca pourra aussi m'aider pour essayer seule une prochaine fois.
Les deux méthodes fonctionnent super bien.
A bientôt peut être pour une prochaine demande
Cordialement
Evelyne