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
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
3 réponses
M-12
Messages postés
1332
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 février 2025
285
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 754
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