Trouver la premiere cellule vide dans une ligne

Résolu
cs_mickey89 Messages postés 3 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 13 août 2009 - 12 avril 2007 à 17:43
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 13 avril 2007 à 12:02
Bonjour,

je souhaite connaitre la premiere cellule vide dans une ligne (ici la 11) et y coller ma variable input .
puis je souhaite coller une autre valeur(qui provient d'une cellule) dans la case à sa droite.

Pouvez-vous m'aider svp

Merci

9 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
12 avril 2007 à 23:57
Il y a 256 colonnes. Tu veux écrire dans 2 cellules. Il faut donc lire 255 cellules pour éviter le débordement et causer une erreur.

Dim I as integer
For i = 1 to 255
    If Cells(11,i) = "" then
       cells(11,i) = "ValeurDuInputBox"
       cells(11, i + 1) = "L'autre valeur"  'Range("D25")
    End if  
next

MPi
3
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
12 avril 2007 à 18:51
en VB sur un grid ou en VBA sur excel ?
cordialement
louis
0
cs_mickey89 Messages postés 3 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 13 août 2009
12 avril 2007 à 19:34
en vba sur excel
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
13 avril 2007 à 00:06
Bon, c'est plus clair, essaie le code ci-dessous
supposons : données sur ligne 5 : début colonne A

Function ChercheRangeVide()
Dim i As Integer
Const R1 = "rempli1" 'rem à remplacer par ta donnée 1
Const R2 = "Rempli2" 'rem à remplacer par ta donnée 2


Worksheets("Feuil1").Activate 'rem adapter éventuellement le nom de la feuille
For i = 1 To ActiveSheet.Columns.Count
    If Cells(5, i).Value = 0 Then
        Cells(5, i).Value = R1
        Cells(5, i + 1).Value = R2
        Exit For
    End If
Next i
End Function
Ca devrait aller
cordialement
louis
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
13 avril 2007 à 00:09
pour mpi
sorry, mais tu a poster pendant que j'écrivais mon poste
cordialement
louis
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
13 avril 2007 à 00:17
pour MPi
tu à oublier Exit for
et il est toujours préférable d'activer l'objet de référence, surtout si tu veux tester dans l'éditeur avec F5  et F8
louis
0
cs_mickey89 Messages postés 3 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 13 août 2009
13 avril 2007 à 09:47
merci à MPI et lermitte222
l'exit for est en effet indispensable

merci encore à vous 2
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
13 avril 2007 à 10:06
Salut,
Je sais que le sujet est résolu, mais voici des solutions alternatives (pas forcément des plus simples, mais elles utilisent des méthodes proposées par EXCEL)

'=========== l'APPEL
Private Sub CommandButton1_Click()
Dim Resultat As Integer
   'Récupère le numéro de la colonne
   Resultat = PremiereColonneVide
   If Resultat <> -1 Then
       'Remplir les cellules si possible
       ActiveSheet.Cells(11, Resultat).Value = "BLABLA"
       ActiveSheet.Cells(11, Resultat + 1).Value = "AUTRE BLABLA"
   End If
End Sub<hr />
'==== LE CHOIX PARMIS LES FONCTIONS SUIVANTES
'Autre méthode (peu être la plus simple des trois que je propose)
'UTILSANT SPECIALCELLS
Public Function PremiereColonneVide() As Integer
On Error GoTo HandleError
   PremiereColonneVide = ActiveSheet.Rows("11:11").SpecialCells(xlCellTypeBlanks).Column
   If PremiereColonneVide > 255 Then PremiereColonneVide = -1
Exit Function
HandleError:
   PremiereColonneVide = -1
End Function<hr />
'Premiere méthode Renvoie le numéro de la premiere colonne
'Vide ou alors si impossible à ajouter, renvoie -1
''UTILSANT LA METHODE FIND
Public Function PremiereColonneVide() As Integer
On Error GoTo HandleError
   'Selectionne A11
   ActiveWorkbook.ActiveSheet.Range("A11").Select
   'Teste si la premiere cellule est vide
   'Ce test est fait ici car si on passe par Find, et que A11 Vide,
   'on retournera 2 Quoiqu'il arrive (DONC FAUX)
   If IsEmpty(ActiveCell.Value) Then
       PremiereColonneVide = 1
       Exit Function
   End If
   'Utilise la méthode Find de l'objet Range
   ActiveWorkbook.ActiveSheet.Rows("11:11").Find(vbNullString, ActiveCell, xlValues, xlPart, xlByRows, xlNext, False).Activate
   'Récupère la column de la cellule active
   PremiereColonneVide = ActiveCell.Column
   'Si il ne reste qu'une celluel dispo en 256 alors on retourne -1   If PremiereColonneVide 256 Then PremiereColonneVide -1
   Exit Function
HandleError:
'GEstion d'erreur dans le cas où la ligne est pleine
PremiereColonneVide = -1
End Function<hr />
''UTILSANT SELECTION.END
Public Function PremiereColonneVide() As Integer
   'Selectionne A11
   ActiveWorkbook.ActiveSheet.Range("A11").Select
   'Encore un test spécial pour 1 (et 2 aussi )
   If IsEmpty(ActiveCell) Then
       PremiereColonneVide = 1
       Exit Function
   End If
   
   If IsEmpty(ActiveWorkbook.ActiveSheet.Range("B11")) Then
       PremiereColonneVide = 2
       Exit Function
   End If
   Call Selection.End(xlToRight).Select
   PremiereColonneVide = ActiveCell.Column + 1
   If PremiereColonneVide > 255 Then PremiereColonneVide = -1
End Function<hr />

, ----
[code.aspx?ID=41455 By Renfield]

Voila j'espère que ca pourra servir même si c'est peu être moins simple.
@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
13 avril 2007 à 12:02
(J'ai effectivement oublié le Exit For... écriture trop rapide sans test...)

Une autre chose qu'il faudrait peut-être vérifier. Si une cellule est vide mais qu'il y a d'autres données à droite, est-ce que tu dois écrire quand même ? ce cas ne s'applique peut-être pas à toi, par contre.

Il faudrait peut-être alors commencer par la droite et aller vers la gauche jusqu'à ce qu'une cellule ne soit pas vide

MPi
0