Bonjour,
J'ai besoin de réaliser une macro toute bête mais que je peine à faire.
Je veux parcourir mon tableau de B7 a R89 et pour toute les cases vide mettre un 0 à l'intérieur. Est ce que quelqu'un peut m'aider.
Merci d'avance et bonne après midi
Version imprimable
Bonjour,
J'ai besoin de réaliser une macro toute bête mais que je peine à faire.
Je veux parcourir mon tableau de B7 a R89 et pour toute les cases vide mettre un 0 à l'intérieur. Est ce que quelqu'un peut m'aider.
Merci d'avance et bonne après midi
Salut,
En effet c'est tout bête...quand on sait comment faire;)
Tu dois faire une boucle pour parcourir tes cellules, dans ton cas tu parcours une plage définie on va donc lui dire de parcourir toutes les cellules de la plage, voici le code:
Je pense avoir mis assez de commentaire, mais n'hésite pas si tu as des questions.Code:
1
2
3
4
5
6
7
8
9
10 Sub VideZero() Dim MaPlage As Range, cel As Range 'Dimensionnement des variables Set MaPlage = Sheets("TaFeuille").Range("B7:R89") 'Définition de la plage, tu donner le nom de ta feuille For Each cel In MaPlage 'Boucle sur chaque cellule If cel = "" Then cel = "0" 'Vérif si la cellule est vide Next cel 'Passe à la cellule suivante End Sub
A+
edit grillé et sans commentaire :)Code:
1
2
3
4
5
6
7
8
9 sub test () for i = 2 to 18 for j = 7 to 89 if cells(j, i).value = "" then cells(j,i).value = 0 end if end sub next j next i
Merci beaucoup pour ton aide mais il y a une incompatibilté de type a priori au niveau du cel.
eh bien prend ma solution elle marche testé et approuvé :)
C'est la meme chose que notre cher collègue mais avec des boucle sur les indice sans avoir à définir la range initiale.
C'est tout simple tu regardes chaque cellule et en fonction de son contenu soit tu ne fais rien soit tu met 0
Re, là je comprend pas, sur quel ligne ça coince, as tu changé le nom de la feuille? si non, il faut le faire, si oui, vérifie bien le nom
@ David_atx, pas grave, c'est l'avantage du forum d'avoir plusieurs solution mais ton End sub avant les next j et next i ça va pas le faire ;)
Et dernière remarque, on avait dans une autre discussion comparer la rapidité du for each à d'autre boucle et c'est plus rapide (très légèrement et sans réel impact sur une si petite plage...)
A+
Moi je propose simplementQui ressemble beaucoup à la proposition de FvandermeulenCode:
1
2
3
4
5
6
7 Sub Test() For Each c In Worksheets("Feuil1").Range("B7:R89") If c.Value = "" Then c.Value = "0" End If Next c End Sub
Qui marche bien chez moi
Désolé tous les deux mais ca me met une erreur de type sur les cas. et lorsque je fais debogage ca plante sur le If Cells(j, i).Value = "" et meme endroit pour la première solution même en changeant le nom de la feuille. Ca je trouve ca bizarre
Si tu veu utiliser Cells
Tu peu aussi utiliserCode:
1
2
3
4
5
6
7
8
9 Sub Test() For i = 7 To 89 For j = 2 To 18 If Cells(i, j) = "" Then Cells(i, j) = "0" End If Next j Next i End Sub