recherche file discution déséspérément

D

dIDIER 2

Guest
Rebonjour le forum


Voila je recherche déséspérément un fil de discution du forum qui répondait a mon prblm.

Je cherche en vba a metre dans des cellules (a la queu leu leu ligne par ligne) des données de façon automatique.
Pour cela j'ai besoin de savoir si la cellule est vide, avant d'incrémenter ma cellule.

En gros : comment dire que si la cellule n'est pas vide il faut descendre d'une ligne, que si celle-la n'est pas vide il faut descendre d'une ligne,etc etc etc
Que si la cellule est vide il faut ecrir dans cet cellule.

merci
crdlmt
Didier 2
 
@

@+Thierry

Guest
Bonsoir Didier Two et le Forum,

Je ne me rappelle pas de ce fil... Et "première cellule vide retourne des réponses classiques pour trouver la......... Dernière cellule vide !! (lol)

Bon c'est un peu tordu, mais on peut faire comme ceci... ce devrait résoudre ton problème même si ce n'est pas la soluce que tu cherches désepérément dans le forum :


Option Explicit

Sub PremCellVide()
Dim Cell As Range
Dim Plage As Range
Dim UneFois As Boolean
Dim Donnee As String

Donnee = InputBox("Entrez Votre Donnée", "Saisie", "test")

Set Plage = Sheets(1).Range("A1:" _
& Sheets(1).Range("A65536").End(xlUp).Address)

For Each Cell In Plage
If UneFois = True Then Exit Sub
If Cell.Value = "" Then
Cell.Value = Donnee
UneFois = True
End If
Next
If UneFois <> True Then
MsgBox "Pas de Cellule Vide dans la Plage Indiquée", vbCritical, "Données Non-Reportée"
End If
End Sub
 
D

dIDIER 2

Guest
salut thierry
j'ai l'impression que ta formul ne fonctionne pas.

si la cellule A1 est remplis cela ne passe pas a la cellule A2 et m'indique que toute la plage est pleine.

De plu que veut dire "Option Explicit" (a quoi cela sert il)?
et End(xlUp).Address ?

crdlmt
Didier 2
 
D

dIDIER 2

Guest
Salut thierry
voila la macro que je viens d'écrire

Sub EcritSiVideCellule()
Dim valeur As String, cellule As Range, contenu As Variant
ligne = 0
Sheets("feuil1").Select
valeur = InputBox("rentrez votre valeur")
revient:

ligne = ligne + 1

contenu = Cells(ligne, 1).Value
If contenu = "" Then Cells(ligne, 1).Value = valeur: Exit Sub
GoTo revient

End Sub

Elle a l'air de marcher.
ce qui m'inquiéte c'est quand je vais arrivé a la fin du tableau.
De plus jaurais préférer utiliser range au lieu de cells qui est inverser et plus difficil a situer sur le tableau.
Le goto me gene aussi il parait qu'il vaut mieux ne pas l'utiliser pourquoi ?
a plus
Didier
 
@

@+Thierry

Guest
Re Bonsoir Didier Two

Humm

Pour te rassurer, je te dirais au premier abord que si tu dis :
"j'ai l'impression que ta formul ne fonctionne pas"

C'est certain car je n'écris jamais de formule ! ou alors je les écrits à travers du VBA...... ou vraiment.......... cas "ultra extrème exceptionnel" c'est que je me lance dans une formule en voyant un post laissé à l'abandon........

Bon alors revenons à nos moutons Code VBA j'ai (of course) testé le code....... maintenant si "TA PLAGE" est une cellule (çà franchement je n'y avais pas pensé en lisant ta question !!) (lol).......... alors écris ceci :

Sub PremCellVide()
Dim Cell As Range
Dim Plage As Range
Dim UneFois As Boolean
Dim Donnee As String

Donnee = InputBox("Entrez Votre Donnée", "Saisie", "test")

Set Plage = Sheets(1).Range("A1:A100")

For Each Cell In Plage
If UneFois = True Then Exit Sub
If Cell.Value = "" Then
Cell.Value = Donnee
UneFois = True
End If
Next
If UneFois <> True Then
MsgBox "Pas de Cellule Vide dans la Plage Indiquée", vbCritical, "Données Non-Reportée"
End If
End Sub

Et tu adaptes ("A1:A100")......... à la zone "vide" que tu voudrais couvrir et tu délimite ainsi ton inquiétude pour la fin de ton tableau.

Faut un minimum d'interprétation....... Suite à ta question j'ai j'essayé de créer une plage en dimension X ....... MAIS si cette plage est UNE cellule ("A65536").end(xlup) est suffisant........... et de toute manière tu n'as pas de cellule "pleine" intercalée de cellule "vides" antre "A1" et "A65536"..... (!)no comment

"End(xlUp)"....... ben tape ceci dans le moteur de recherche de ce forum et tu verras à quoi celà sert ...... c'est une instruction de base pour trouver la dernier cellule vide en partant du bas.......

"Option Explicit" ben c'est primordial pour t'obliger à déclarer tes variables... (idem => rechercher dans le forum)

Quand au GoTo c'est une instruction comme une autre....... les "il parait" ne sont pas vraiment importantS seul l'efficacité compte..... Goto est une des instructionSles plus classiques en basic, et elle reste classique en Visual Basic.

Bonne continuation
@+Thierry
 
@

@+Thierry

Guest
Bonjour Didier Two et le forum,

Finalement je suis en train de boire mon café en relisant ce fil...

En fait c'est ton histoire de fil introuvable désespéreément qui embrouille un peu...

Car j"ai l'impression que je suis passé à coté de ta question au niveau simplicité, car ta solution est, si il faut, celle que l'on retrouve des "millions" de fois dans ce forum, ou au travers de diverses démos... Enfin pour être sûr que l'on ne passe pas à coté des choses simples dans ce fil :

Sub LastLigne
Dim L as Long
Dim Donnee As String
L = Sheets(1).Range("A65536").End(XlUp).Row + 1
Donnee = InputBox("Entrez Votre Donnée", "Saisie", "test")
Sheets(1).Range("A" & L).Value = Donnee
End Sub


Cependant DEUX choses sont primordiales pour que ce code fonctionne...
1) il faut qu'au moins une cellule contienne une valeur en colonne A
2) si les celulles sont remplies de manière "dispercée" cette macro trouvera la dernière cellule vers le bas (en la cherchant en partant du bas) et écrira dans la cellule suivante, sans combler les "trous"... (La macro plus haut, par sa boucle, remplira les "trous")

Voilà, comme ça c'est un fil sans trou aussi :)

Bonne Journée
@+Thierry
 

Discussions similaires

Réponses
2
Affichages
222
Réponses
7
Affichages
554
  • Question
Microsoft 365 RECHERCHE and co
Réponses
18
Affichages
2 K

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06