Faire référence à une cellule vide en VBA

Morgane

XLDnaute Nouveau
Bonjour à tous,

Je suis actuellement en train de tâtonner sur le macro qui doit faire référence à des cellules vides.

Je m'explique, mon fichier comporte de plages (Zone1 fichier en PJ) avec des sous plages (Zone100 fichier en PJ) et des cellules.

Je souhaite que mon code fasse :

cherche d'abord dans la Zone1 si il y a des cellules vides ?

si oui alors il cherche si il y a des cellule vides dans la Zone100​
si oui alors il cherche la première cellule vide de cette Zone100​
si non alors il cherche dans la Zone101​
si non alors il cherche dans la Zone102​
si non alors il cherche dans la Zone2​
si oui cherche dans la Zone200​
si oui cherche la première cellule vide​
si non alors il cherche dans la Zone201​
si non alors il cherche dans la Zone202​

J'éspère que c'est clair ?:confused: Le fond du problème c'est la référence aux cellules vides !

Je vous remercie pour votre aide
 

Pièces jointes

  • Test.xlsm
    8.7 KB · Affichages: 55
  • Test.xlsm
    8.7 KB · Affichages: 59
  • Test.xlsm
    8.7 KB · Affichages: 58

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

Salut à tous,

bhbh,
suite à plus d'investigation, j'ai réussi à faire ce que je voulais grâce à ton code ci dessus. Cependant je pense qu'il y surement des améliorations à y apporter. Tu trouveras en PJ le fichier avec le code qui fonctionne et qui fait ce que je voulais.

J'éspère que ce fichier servira au minimum pour la compréhension de tous et peut-être à une amélioration par l'un d'entre vous ;).

un grand merci à tous.
 

Pièces jointes

  • Test.xlsm
    18 KB · Affichages: 32
  • Test.xlsm
    18 KB · Affichages: 38
  • Test.xlsm
    18 KB · Affichages: 38

Cousinhub

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Bonjour,

Je n'ai toujours pas compris, et tu n'as pas répondu aux questions....

Dans le doute, est-ce que ceci conviendrait :

Code:
Sub ee()
 Dim Zone_P, Zone_S
 Dim Z_P, Z_S
 Dim Plg_P As Range, Plg_S As Range
 Zone_P = Array("Zone1", "Zone2")
 Zone_S = Array("00", "01", "02")
 For Each Z_P In Zone_P
     Set Plg_P = Range(Z_P)
     If Application.CountA(Plg_P.Cells) <> Plg_P.Cells.Count Then
         For Each Z_S In Zone_S
             Set Plg_S = Range(Z_P & Z_S)
             If Application.CountA(Plg_S.Cells) <> Plg_S.Cells.Count Then
                 Plg_S.Cells.SpecialCells(xlCellTypeBlanks)(1) = 1
             End If
         Next Z_S
     End If
 Next Z_P
End Sub

Peut-être????
 

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

Re-,

Je suis un peu comme Hervé, soit "perplexe"...

tu veux remplir toutes les cellules vides de chaque zone, ou uniquement les 1ères cellules vides de chaque sous-zone?

Re bhbh,
Pour répondre à ta question, je ne veux pas remplir toute les cellules vides de chaque zone mais bien uniquement LA première cellule vide de la première zone vide.

Pour illustrer ce que je voudrais, on peut prendre comme exemple les vestiaires à chaussure du bowling, tu as beaucoup de case qui peuvent recevoir des chaussures. Je voudrais que la macro m'indique quelle est la case vide la plus proche (en partant de gauche à droite) pour y mettre les chaussures d'un nouveau client. Si tu reprend le code qu'il y a sur le fichier que j'ai mis plus haut tu verra que c'est ce qu'il fait.

Cependant, je doute que le code que j'ai modifié soit le plus correct possible (genre le GoTo) c'est pour ça que je voulais vos avis.
 

Cousinhub

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Re-,

Donc le code proposé devrait le faire....

bonne soirée

Edit, quoique si tu dois stopper après avoir trouvé ta 1ère cellule vide, tu rajoutes le End comme ceci :

Code:
Sub ee()
 Dim Zone_P, Zone_S
 Dim Z_P, Z_S
 Dim Plg_P As Range, Plg_S As Range
 Zone_P = Array("Zone1", "Zone2")
 Zone_S = Array("00", "01", "02")
 For Each Z_P In Zone_P
     Set Plg_P = Range(Z_P)
     If Application.CountA(Plg_P.Cells) <> Plg_P.Cells.Count Then
         For Each Z_S In Zone_S
             Set Plg_S = Range(Z_P & Z_S)
             If Application.CountA(Plg_S.Cells) <> Plg_S.Cells.Count Then
                 Plg_S.Cells.SpecialCells(xlCellTypeBlanks)(1) = 1: End
             End If
         Next Z_S
     End If
 Next Z_P
End Sub

Peut-être?
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Bonsoir Morgane
Bonsoir le Fil
Bonsoir le Forum

cette procédure fait quelque chose comme ce que je pense avoir compris lol

Code:
Sub ee()
 Dim Zone_P
 Dim Z_P
 Dim TabRef As Variant

 Zone_P = Array("Zone1", "Zone2")
 With Worksheets("Feuil1") 'avec la feuille "Feuil1"
    For Each Z_P In Zone_P 'pour chaque plage nommée de Zone_ZP
         TabRef = Range(Z_P).Value 'on remplie un tableau de ses valeurs
    For C = 1 To UBound(TabRef, 2) ' pour chaque colonnes de ce tableau
        For L = 1 To UBound(TabRef, 1) 'pour chaque lignes de cette colonne
          If TabRef(L, C) = "" Then 'si Vide
              .Range(Z_P)(L, C).Value = 1 'on colle dans la cellule correspondante de la Zone "Z_P" un "1"
              Exit Sub 'puis l'on quitte la procédure
          End If 'fin de la condition
      
          Next L 'autre ligne
        Next C  'autre colonne
  Next Z_P 'autre Zone
End With
End Sub

Bonne fi de Soirée
Amicalement
Jean marie
 
Dernière édition:

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

bonjour à tous,

Je reviens vers vous car j'éprouve quelques difficultés à faire référence à la cellule rempli par le chiffre 1... En effet je voudrais en plus de cette saisie :

- Insérer un commentaire (Addcomment...)
- Colorier en rouge

Auriez vous un idée du code à mettre pour faire ceci ?

Merci d'avance.
 

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

Utiliser l'enregistreur de macro, tout en faisant la manipulation ;)

Bonjour Staple1600,

Oui j'ai déjà essayé :

PHP:
Sub essai()
'
' essai Macro
'

'
    Range("H12").AddComment
    Range("H12").Comment.Visible = False
    Range("H12").Comment.Text Text:="morgane:" & Chr(10) & "test" & Chr(10) & ""
    Range("H12").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Mais le souci c'est que je n'arrive pas à faire référence à la cellule concerné (la première cellule de chaque sous zone remplie par 1) ?
 

Cousinhub

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Bonjour,

Peut-être ainsi :

Code:
Sub ee()
 Dim Zone_P, Zone_S
 Dim Z_P, Z_S
 Dim Plg_P As Range, Plg_S As Range
 Zone_P = Array("Zone1", "Zone2")
 Zone_S = Array("00", "01", "02")
 For Each Z_P In Zone_P
     Set Plg_P = Range(Z_P)
     If Application.CountA(Plg_P.Cells) <> Plg_P.Cells.Count Then
         For Each Z_S In Zone_S
             Set Plg_S = Range(Z_P & Z_S)
             If Application.CountA(Plg_S.Cells) <> Plg_S.Cells.Count Then
                 With Plg_S.Cells.SpecialCells(xlCellTypeBlanks)(1)
                     .Value = 1
                     .AddComment
                     .Comment.Text Text:="morgane:" & Chr(10) & "test" & Chr(10) & ""
                     .Interior.Color = 255
                     End
                 End With
             End If
         Next Z_S
     End If
 Next Z_P
End Sub

Bon W-E
 

Fo_rum

XLDnaute Accro
Re : Faire référence à une cellule vide en VBA

Bonsoir

... je ne veux pas remplir toutes les cellules vides de chaque zone mais bien uniquement LA première cellule vide de la première zone vide.
...
pour cela, avec x zones nommées Zone1, Zone2, ..., Zonex, je me contenterais de
Code:
Sub La()
 For n = 1 To x
   If Range("Zone" & n).Count = Range("Zone" & n).SpecialCells(xlCellTypeBlanks).Count Then
     Range("Zone" & n)(1) = "ici": Exit Sub
   End If
 Next
End Sub
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Bonjour Morgane
bonjour le Fil
Bonjour le Forum

voici ce que j'ai fait pour ne pas avoir a définir le nombre de Zones
Code:
Sub TestName()
Dim nms As Names
Dim Rng As Range
Dim Wks As Worksheet
Dim R As Integer
Set nms = ActiveWorkbook.Names
Set Wks = Worksheets(1)
With Wks
       .Cells.ClearComments 'on efface les commentaires de la feuille
For R = 1 To nms.Count 'pour chaque plages Nommées de la collection des plages Nommées
   If Names(R).Name Like "Zone*" Then 'si le nom est de ce type 
    Set Rng = .Range(nms(R).Name)(1, 1) 'on récupére la premiere cellule de la plage Nommée
      With Rng 'avec cette cellule
                .Value = 1 'on y met 1
                .AddComment ("Morgane Test") 'on ajoute le commentaire avec son texte
                .Interior.Color = vbRed 'puis on colore la cellule
      End With
   End If
Next R
End With
End Sub
Bonne continuation
Bonne Fin de Journée
Amicalement
Jean Marie
 

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

Bonjour à tous,

Je viens d'essayer toutes vos réponses.

bhbh,

Ta solution fonctionne très bien et je t'en remercie.

Fo_rum,

Je pense que dans ton code tu n'as pas pris en compte les sous zones qui peut y avoir dans chaque Zone. Dans la Zone1, il y a la zone100, Zone101 etc...

ChTi160,

J'ai essayé ton code mais une fois executer une fois, j'ai une erreur d'exécution 1004, Erreur défini par l'applicaiton ou l'objet, lorsque je fais le déboguage, la ligne Addcomment est en jaune ?

Le truc bizarre c'est que l'xécution fonctionne bien la première fois ?

En tous cas merci pour vos réponses.
 

ChTi160

XLDnaute Barbatruc
Re : Faire référence à une cellule vide en VBA

Bonjour Morgane
Bonjour le Fil
Bonjour Le Forum

Chez moi pas de problème , n'aurais tu pas modifié la procédure , par exemple la suppression de la ligne qui efface les Comments déjà présents
Le Fichier : Ce lien n'existe plusRegarde la pièce jointe Zones.xls
Bonne Journée
Amicalement
Jean Marie
 

Pièces jointes

  • Zones.xls
    41.5 KB · Affichages: 28
  • Zones.xls
    41.5 KB · Affichages: 29
Dernière édition:

Morgane

XLDnaute Nouveau
Re : Faire référence à une cellule vide en VBA

Bonjour Jean Marie,

Je viens d'ouvrir ton fichier, et je viens de me rendre compte que la macro saisie chaque 1ere cellule de chaque zone en même temps. Or je voulais qu'elle remplisse la première cellule de la première zone libre (comme fait le code de bhbh). En tout cas te casse pas la tête, mon souci est résolu via le code de bhbh qui fonctionne très bien :).

Merci à tous et au plaisir (bientôt surement :rolleyes:)
 

Discussions similaires

Réponses
3
Affichages
292
Réponses
4
Affichages
278

Statistiques des forums

Discussions
312 793
Messages
2 092 154
Membres
105 241
dernier inscrit
Mixlsm