Msgbox lorsque dans colonne A et D une cellule est vide
Résolu/Fermé
A voir également:
- Msgbox lorsque dans colonne A et D une cellule est vide
- Déplacer une colonne excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Formule somme excel colonne - Guide
- Comment supprimer une page vide sur word - Guide
- Trier colonne excel - Guide
13 réponses
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
23 juil. 2015 à 06:36
23 juil. 2015 à 06:36
Bonjour
Essayez ceci
Cdlt
Essayez ceci
Sub DetectCellulesVides() Application.ScreenUpdating = False DerCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address DerLig = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row With ActiveSheet.Range("A1:A" & DerLig) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With With ActiveSheet.Range("D1:D" & DerLig) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With CellVide = Right(CellVide, Len(CellVide) - 2) If CellVide <> "" Then MsgBox "Des cellules vides ont été trouvées aux adresses suivantes" & Chr(10) & CellVide Range("A3", DerCell).Copy End Sub
Cdlt
Merci Renchi83
J'ai essayé de comprendre ce code si je me trompe pas, il compte aussi les celles qui sont vide au delà de la zone des donnée. C'est à dire les cellule qui ont été une fois utilisé.
Le code est formidable en tout cas, je vais l'essayer sur une nouvelle feuille et vous rendre compte après
A+
J'ai essayé de comprendre ce code si je me trompe pas, il compte aussi les celles qui sont vide au delà de la zone des donnée. C'est à dire les cellule qui ont été une fois utilisé.
Le code est formidable en tout cas, je vais l'essayer sur une nouvelle feuille et vous rendre compte après
A+
La réponse de Frenchie83 Marche bien quand les cellules sont vraiment vide "vièrge". Ce problème est sérieux avec les cellules excel. Dès qu'elles ont été une fois utilisées, même quand on les vide, elles ne sont pas pour autant vide entant que tel?
Que doit on faire?
Que doit on faire?
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 juil. 2015 à 04:53
24 juil. 2015 à 04:53
Bonjour
Petite modif
Cdlt
Petite modif
Sub DetectCellulesVides() Application.ScreenUpdating = False DerCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address DerLigA = [A100000].End(xlUp).Row With ActiveSheet.Range("A1:A" & DerLigA) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With DerLigD = [D100000].End(xlUp).Row With ActiveSheet.Range("D1:D" & DerLigD) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With CellVide = Right(CellVide, Len(CellVide) - 2) If CellVide <> "" Then MsgBox "Des cellules vides ont été trouvées aux adresses suivantes" & Chr(10) & CellVide Range("A3", DerCell).Copy End Sub
Cdlt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci Frenchie83
Le problème est résolu pour la détection des cellules vide mais:
La ligne du code suivante revoie une erreur lorsque aucune cellule n'est vide.
Voulez vous bien m'ajouter la gestion de cet erreur?
CellVide = Right(CellVide, Len(CellVide) - 2)
En plus DerCell prend en compte toutes cellules utilisées pas nécessairement la dernière cellule contenant une donnée. Essayez de Voir ça aussi SVP
Range("A3", DerCell).Copy
Encore une fois M6
Le problème est résolu pour la détection des cellules vide mais:
La ligne du code suivante revoie une erreur lorsque aucune cellule n'est vide.
Voulez vous bien m'ajouter la gestion de cet erreur?
CellVide = Right(CellVide, Len(CellVide) - 2)
En plus DerCell prend en compte toutes cellules utilisées pas nécessairement la dernière cellule contenant une donnée. Essayez de Voir ça aussi SVP
Range("A3", DerCell).Copy
Encore une fois M6
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 juil. 2015 à 11:13
24 juil. 2015 à 11:13
RE
Pour la dernière question, j'ignore si les colonnes ont toutes la même longueur, dans le cas présent je me suis basé sur la longueur de la colonne A, généralement la plus représentative, mais ne connaissant pas votre tableau, difficile d'imaginer.
Cdlt
Pour la dernière question, j'ignore si les colonnes ont toutes la même longueur, dans le cas présent je me suis basé sur la longueur de la colonne A, généralement la plus représentative, mais ne connaissant pas votre tableau, difficile d'imaginer.
Sub DetectCellulesVides() Application.ScreenUpdating = False DerCell = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address DerLigA = [A100000].End(xlUp).Row With ActiveSheet.Range("A1:A" & DerLigA) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With DerLigD = [D100000].End(xlUp).Row With ActiveSheet.Range("D1:D" & DerLigD) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With If CellVide = "" Then GoTo Suite CellVide = Right(CellVide, Len(CellVide) - 2) If CellVide <> "" Then MsgBox "Des cellules vides ont été trouvées aux adresses suivantes" & Chr(10) & CellVide Suite: DerLigA = [A100000].End(xlUp).Row Range("A3", DerLigA).Copy End Sub
Cdlt
Frenchie83
Merci de revoir ceci
1) L'exécution de :
Range("A3", DerLigA).Copy
a échoué
2) lorsque la dernière cellule dans la colonne A ou D est vide, il ne les lit pas
Bon appétit il est 11h 37 chez nous
Merci de revoir ceci
1) L'exécution de :
Range("A3", DerLigA).Copy
a échoué
2) lorsque la dernière cellule dans la colonne A ou D est vide, il ne les lit pas
Bon appétit il est 11h 37 chez nous
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 juil. 2015 à 18:20
24 juil. 2015 à 18:20
Bonsoir
lorsque la dernière cellule dans la colonne A ou D est vide, il ne les lit pas., le problème, comme je vous l'ai déjà dit dans le post 6, c'est que je ne connais pas la structure de votre tableau.
Combien y a t-il de colonnes?
Les titres sont sur quelle ligne, la 1 ou la 2?
Est-ce que toutes les colonnes ont la même longueur?
En attendant vos réponses, je me base à la longueur de la colonne A, remplacez
Cdlt
lorsque la dernière cellule dans la colonne A ou D est vide, il ne les lit pas., le problème, comme je vous l'ai déjà dit dans le post 6, c'est que je ne connais pas la structure de votre tableau.
Combien y a t-il de colonnes?
Les titres sont sur quelle ligne, la 1 ou la 2?
Est-ce que toutes les colonnes ont la même longueur?
En attendant vos réponses, je me base à la longueur de la colonne A, remplacez
Range("A3", DerLigA).Copypar
DerCol = [IV3].End(xlToLeft).Column Range(Cells(3, 1), Cells(DerLigA, DerCol)).CopySelon vos réponses, il faudra peut-être, y apporter une modification.
Cdlt
A Frenchie83
M6
Votre dernière proposition marche à l'exception du fait que lorsque la dernière cellule de la colonne A ou D est vide, il ne le compte pas
Les titre sont sur la ligne 2
Les colonnes c'est de A a K soient 11 colonnes
Bon week end a vous
M6
Votre dernière proposition marche à l'exception du fait que lorsque la dernière cellule de la colonne A ou D est vide, il ne le compte pas
Les titre sont sur la ligne 2
Les colonnes c'est de A a K soient 11 colonnes
Bon week end a vous
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
24 juil. 2015 à 22:59
24 juil. 2015 à 22:59
Bonsoir
Remplacez les 2 dernières lignes précédentes par ceci
Je calcule la longueur des 4 colonnes et je prend comme référence celle qui est la plus longue, remplacez le 4 par une autre valeur si vous voulez analyser sur plus de 4 colonnes
Cdlt
Remplacez les 2 dernières lignes précédentes par ceci
DerLigA = [A100000].End(xlUp).Row DerCol = 1 For l = 2 To 4 If Cells(100000, l).End(xlUp).Row > Cells(100000, Col).End(xlUp).Row Then DerCol = l Next l Range(Cells(3, 1), Cells(DerLigA, DerCol)).Copy
Je calcule la longueur des 4 colonnes et je prend comme référence celle qui est la plus longue, remplacez le 4 par une autre valeur si vous voulez analyser sur plus de 4 colonnes
Cdlt
Bonjour Frenchie83
Je pense avoir mal posé mon problème. Les 2 dernières lignes que vous demandez de remplacer marchent plutôt bien. par contre votre nvelle proposition plante sur
If Cells(100000, l).End(xlUp).Row > Cells(100000, Col).End(xlUp).Row Then DerCol = l
Je repose mon problème:
Le code n'arrive pas à détecter les cellules vides sur la dernière ligne.
Je n'ai jamais été coaché sur un forum comme vous le faites si bien M6
Je pense avoir mal posé mon problème. Les 2 dernières lignes que vous demandez de remplacer marchent plutôt bien. par contre votre nvelle proposition plante sur
If Cells(100000, l).End(xlUp).Row > Cells(100000, Col).End(xlUp).Row Then DerCol = l
Je repose mon problème:
Le code n'arrive pas à détecter les cellules vides sur la dernière ligne.
Je n'ai jamais été coaché sur un forum comme vous le faites si bien M6
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
27 juil. 2015 à 10:39
27 juil. 2015 à 10:39
Bonjour
Etourderie de ma part
Le code n'arrive pas à détecter les cellules vides sur la dernière ligne. Je crois comprendre, je fais la modif et je vous renvoi tout ça:.
Cdlt
Etourderie de ma part
If Cells(100000, l).End(xlUp).Row > Cells(100000, DerCol).End(xlUp).Row Then DerCol = l
Le code n'arrive pas à détecter les cellules vides sur la dernière ligne. Je crois comprendre, je fais la modif et je vous renvoi tout ça:.
Cdlt
Frenchie83
Messages postés
2240
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
11 août 2023
338
27 juil. 2015 à 10:48
27 juil. 2015 à 10:48
Re
Voilà la modif, si j'ai bien compris
Cdlt
Voilà la modif, si j'ai bien compris
Sub DetectCellulesVides() Application.ScreenUpdating = False DerLigA = [A100000].End(xlUp).Row DerCol = 1 For l = 2 To 11 If Cells(100000, l).End(xlUp).Row > Cells(100000, DerCol).End(xlUp).Row Then DerCol = l Next l NbLigMax = Cells(100000, DerCol).End(xlUp).Row With ActiveSheet.Range("A1:A" & NbLigMax) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With With ActiveSheet.Range("D1:D" & NbLigMax) Set x = .Find("", LookIn:=xlValues) If Not x Is Nothing Then Debx = x.Address Do x.Select CellVide = CellVide & ", " & Replace(x.Address, "$", "", 1) Set x = .FindNext(x) Loop While Not x Is Nothing And x.Address <> Debx End If End With If CellVide = "" Then GoTo Suite CellVide = Right(CellVide, Len(CellVide) - 2) If CellVide <> "" Then MsgBox "Des cellules vides ont été trouvées aux adresses suivantes" & Chr(10) & CellVide Suite: DerCol = [IV3].End(xlToLeft).Column Range(Cells(3, 1), Cells(NbLigMax, DerCol)).Copy End Sub
Cdlt