Incrémenter test cellule non vide
Résolu
jib92
-
jib92 -
jib92 -
Bonjour,
Je travaille sous excel 2003.
Je souhaite enregistrer des données dans un tableau.
Pour cela je souhaite faire un test:
première cellule à tester : B3
si cellule vide, la macro doit enregistrer des données dans la ligne 3
si cellule non vide, la macro doit tester B4, puis B5... jusqu'à trouver une ligne vide pour enregistrer les données.
Le but est d'enregistrer des données sans effacer les enregistrements précédents.
Merci d'avance.
jib92, apprenti...
Je travaille sous excel 2003.
Je souhaite enregistrer des données dans un tableau.
Pour cela je souhaite faire un test:
première cellule à tester : B3
si cellule vide, la macro doit enregistrer des données dans la ligne 3
si cellule non vide, la macro doit tester B4, puis B5... jusqu'à trouver une ligne vide pour enregistrer les données.
Le but est d'enregistrer des données sans effacer les enregistrements précédents.
Merci d'avance.
jib92, apprenti...
A voir également:
- Incrémenter test cellule non vide
- Test performance pc - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test steam deck oled - Guide
- Test composant pc - Guide
- Supprimer page word vide - Guide
8 réponses
pour un débutant c'est pas mal...
tu peux faire plus court avec par exemple :
puisque tu as défini des variables pour les noms des feuilles, autant s'en servir.
Et pour inscrire une valeur même ligne colonne 5 (E) tu peux faire :
eric
tu peux faire plus court avec par exemple :
Set ws = Worksheets("Feuil1") Set ws1 = Worksheets("Feuil2") derlig = ws1.[B65536].End(xlUp).Row + 1 If derlig < 3 Then derlig = 3 ws.[B14:D14].Copy Destination:=ws1.Range("B" & derlig)
puisque tu as défini des variables pour les noms des feuilles, autant s'en servir.
Et pour inscrire une valeur même ligne colonne 5 (E) tu peux faire :
ws1.Cells(derlig, 5).Value = UserForm1.TextBox1.Text
eric
Bonjour,
J'ai résolu mon problème de #ref en copiant directement de C7. Par contre je n'ai pas trouvé pour copier sans la mise en forme. Je vais etre obligé d'utiliser Paste Special mais je ne vois pas comment l'intégrer dans ta procédure qui marche bien.
J'ai résolu mon problème de #ref en copiant directement de C7. Par contre je n'ai pas trouvé pour copier sans la mise en forme. Je vais etre obligé d'utiliser Paste Special mais je ne vois pas comment l'intégrer dans ta procédure qui marche bien.
Facile !!
voila l'algo:
declarer A=3,
tant que (cellule(A,2)<>"")
A=A+1
fin tantque
coller les données dans la cellule(A,2)
ainsi, il vérifie toutes les cellules a partir de B3 et des qu'il y en a une qui est vide il y colle ce que tu as copié
voila l'algo:
declarer A=3,
tant que (cellule(A,2)<>"")
A=A+1
fin tantque
coller les données dans la cellule(A,2)
ainsi, il vérifie toutes les cellules a partir de B3 et des qu'il y en a une qui est vide il y colle ce que tu as copié
Merci de répondre aussi vite.
Pour commencer je suis vraiment au stade débutant.
J'ai écris:
Set ws = Worksheets("Fiche de maintenance")
Set ws1 = Worksheets("Fiche client refusée")
Range("B14:D14").Select
Selection.Copy
Sheets("Fiche client refusée").Select
i = 3
if ws1.Range("B" & i).Value <> ""
Application.CutCopyMode = False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
i = i + 1
end
Moi je me comprends à peu près mais vba pas du tout (mais alors vraiment pas)...
en français:
Feuille ("Fiche de maintenance")
copie des cases B14 à D14
Feuille ("Fiche client refusée")
ligne de départ: i=3
Si B(3) vide alors copie des cases B14 C14 D14 (de ws) dans B3 C3 D3 (ws1)
sinon (B(3) non vide)
on incrémente i=i+1 et on refait le test jusqu'a trouver une ligne vide où copier les données
Par ailleurs, Je voudrais mettre dans E(i) F(i) G(i) des données venant d'une textbox. Vu que je ne connais pas la syntaxe vba, je ne suis pas arrivé... je pense que je devrais enregistrer les valeurs provenant de la listbox avant de faire ma recherche de ligne.
Pour commencer je suis vraiment au stade débutant.
J'ai écris:
Set ws = Worksheets("Fiche de maintenance")
Set ws1 = Worksheets("Fiche client refusée")
Range("B14:D14").Select
Selection.Copy
Sheets("Fiche client refusée").Select
i = 3
if ws1.Range("B" & i).Value <> ""
Application.CutCopyMode = False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
i = i + 1
end
Moi je me comprends à peu près mais vba pas du tout (mais alors vraiment pas)...
en français:
Feuille ("Fiche de maintenance")
copie des cases B14 à D14
Feuille ("Fiche client refusée")
ligne de départ: i=3
Si B(3) vide alors copie des cases B14 C14 D14 (de ws) dans B3 C3 D3 (ws1)
sinon (B(3) non vide)
on incrémente i=i+1 et on refait le test jusqu'a trouver une ligne vide où copier les données
Par ailleurs, Je voudrais mettre dans E(i) F(i) G(i) des données venant d'une textbox. Vu que je ne connais pas la syntaxe vba, je ne suis pas arrivé... je pense que je devrais enregistrer les valeurs provenant de la listbox avant de faire ma recherche de ligne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pour sélectionner la 1ère cellule vide de la colonne B :
[B65536].End(xlUp).Offset(1, 0).Select
eric
Pour sélectionner la 1ère cellule vide de la colonne B :
[B65536].End(xlUp).Offset(1, 0).Select
eric
ça marche bien, j'avoue que j'aurais pas deviner la manip...
Comment pourrais je faire cette copie sans la mise en forme de départ? et le D(i), feuille 3 créé qui est une copie de D14, feuille 1 qui est déjà C7 de la même feuille... (programme torturé) m'indique #REF. C'est un nombre, peut être faut il le préciser ou copier directement de C7... je sais pas. Je précise qu'ensuite j'efface C7 donc D14 et je souhaite conserver la valeur enregistrée dans l'autre feuille.
Merci Eric
Comment pourrais je faire cette copie sans la mise en forme de départ? et le D(i), feuille 3 créé qui est une copie de D14, feuille 1 qui est déjà C7 de la même feuille... (programme torturé) m'indique #REF. C'est un nombre, peut être faut il le préciser ou copier directement de C7... je sais pas. Je précise qu'ensuite j'efface C7 donc D14 et je souhaite conserver la valeur enregistrée dans l'autre feuille.
Merci Eric
Comment pourrais je faire cette copie sans la mise en forme de départ?
à ma connaissance pas avec .copy.
Donc soit retourner au copier/coller avec .PasteSpecial Paste:=xlPasteValues
ou bien s'il n'y a pas bcp de mise en forme à reprendre la modifier sur les cellules d'arrivée
#REF
indépendant de la macro (enfin le bout que je t'ai donné), à régler sur ta feuille... peut-être des suppressions de cellules un peu hatives et des formules y faisaient référence, ressaisi tes formules.
à ma connaissance pas avec .copy.
Donc soit retourner au copier/coller avec .PasteSpecial Paste:=xlPasteValues
ou bien s'il n'y a pas bcp de mise en forme à reprendre la modifier sur les cellules d'arrivée
#REF
indépendant de la macro (enfin le bout que je t'ai donné), à régler sur ta feuille... peut-être des suppressions de cellules un peu hatives et des formules y faisaient référence, ressaisi tes formules.