VBA : saisie en boucle jusqu'à texte atteint
Résolu
Evedll
Messages postés
74
Date d'inscription
Statut
Membre
Dernière intervention
-
Evedll Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Evedll Messages postés 74 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toutes et à tous,
Pour avancer un peu plus dans mon fichier, j'ai besoin de créer une macro qui me permet de saisir un tiret dans les cellules vides de ma colonne A. J'ai essayé de comprendre et de reproduire selon d'autres lignes de vba puisées sur le site. En bref, ça ne fonctionne pas et en plus, mon fichier s'est planté et j'ai perdu ce que j'ai fait donc je ne peux pas vous le montrer. J'étais presque arrivée (du moins je pense) mais ma macro n'a pas voulu s'arrêter et je pense avoir mis les lignes dans le désordre.
Voilà :
en colonne A, saisir un tiret - dans chaque cellule vide de la colonne (sans supprimer les données existantes de la colonne) jusqu'à la cellule dont la valeur est "Nombre de règlements total". Les cellules du dessous doivent rester vide
J'ai bien compris qu'il faut faire une boucle mais je bloque.
Voici le fichier joint, j'ai créé une deuxième feuille dans laquelle j'ai montré ce qu'il me faut
https://we.tl/t-I7GiNpoD5W
Un grand merci à ceux qui voudront bien m'aider
Bonne nuit
Evelyne
Pour avancer un peu plus dans mon fichier, j'ai besoin de créer une macro qui me permet de saisir un tiret dans les cellules vides de ma colonne A. J'ai essayé de comprendre et de reproduire selon d'autres lignes de vba puisées sur le site. En bref, ça ne fonctionne pas et en plus, mon fichier s'est planté et j'ai perdu ce que j'ai fait donc je ne peux pas vous le montrer. J'étais presque arrivée (du moins je pense) mais ma macro n'a pas voulu s'arrêter et je pense avoir mis les lignes dans le désordre.
Voilà :
en colonne A, saisir un tiret - dans chaque cellule vide de la colonne (sans supprimer les données existantes de la colonne) jusqu'à la cellule dont la valeur est "Nombre de règlements total". Les cellules du dessous doivent rester vide
J'ai bien compris qu'il faut faire une boucle mais je bloque.
Voici le fichier joint, j'ai créé une deuxième feuille dans laquelle j'ai montré ce qu'il me faut
https://we.tl/t-I7GiNpoD5W
Un grand merci à ceux qui voudront bien m'aider
Bonne nuit
Evelyne
A voir également:
- VBA : saisie en boucle jusqu'à texte atteint
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
3 réponses
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
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
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