Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajout de valeurs par VBA

4 réponses
Avatar
_PhilBab
Bonjour,
j'essaie d'utiliser cette formule :
for ....
if....then
LigneAjout = Sheets("Base").Range("A3").End(xlDown).Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom
....
end if
next
pour copier des valeurs dans une base
Mon problème, c'est quelle sélectionne que la dernière ligne d'Excel (n°
65xxxx)
que faire, je ne comprends pas, précédemment cela marchait ?

Merci.

4 réponses

Avatar
Steph_D
"_PhilBab" a écrit dans le message de
news:d9dgf8$ku0$
Bonjour,
j'essaie d'utiliser cette formule :
for ....
if....then
LigneAjout = Sheets("Base").Range("A3").End(xlDown).Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom
....
end if
next
pour copier des valeurs dans une base
Mon problème, c'est quelle sélectionne que la dernière ligne d'Excel (n°
65xxxx)
que faire, je ne comprends pas, précédemment cela marchait ?

Merci.



Bonjour,

Xl doit considérer qu'il y a eu une action sur la dernière ligne du
classeur. Peut-être qu'après avoir exécuté la macro pour faire le ménage
trouvé sur Excelabo, votre macro fonctionnera de nouveau correctement.

Steph D.

Sub ménage()
'Jacques Chaussard et Denis Michon

Dim Sh As Worksheet
On Error Resume Next

For Each Sh In Worksheets
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireRow, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByRows, xlPrevious).EntireRow) _
.Offset(1, 0).Delete
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireColumn, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious). _
EntireColumn).Offset(0, 1).Delete
Next
ActiveWorkbook.Save
Set Sh = Nothing
End Sub

Avatar
_PhilBab
merci Steph_D
je vois cela le week end, le soir, faut pas qu'j'abuse trop !! ç'à fait pas
bon ménage.
"Steph_D" a écrit dans le message de news:
d9dlup$2ge$
"_PhilBab" a écrit dans le message de
news:d9dgf8$ku0$
Bonjour,
j'essaie d'utiliser cette formule :
for ....
if....then
LigneAjout = Sheets("Base").Range("A3").End(xlDown).Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom
....
end if
next
pour copier des valeurs dans une base
Mon problème, c'est quelle sélectionne que la dernière ligne d'Excel (n°
65xxxx)
que faire, je ne comprends pas, précédemment cela marchait ?

Merci.



Bonjour,

Xl doit considérer qu'il y a eu une action sur la dernière ligne du
classeur. Peut-être qu'après avoir exécuté la macro pour faire le ménage
trouvé sur Excelabo, votre macro fonctionnera de nouveau correctement.

Steph D.

Sub ménage()
'Jacques Chaussard et Denis Michon

Dim Sh As Worksheet
On Error Resume Next

For Each Sh In Worksheets
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireRow, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByRows, xlPrevious).EntireRow) _
.Offset(1, 0).Delete
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireColumn, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious). _
EntireColumn).Offset(0, 1).Delete
Next
ActiveWorkbook.Save
Set Sh = Nothing
End Sub





Avatar
_PhilBab
Bonjour Steph_D
je viens de nettoyer la feuille, j'ai placé votre macro dans la feuille
concernée (Base),
* j'obtiens en utilisant la formule ci joint et 'LigneAjout =
Sheets("Base").Range("A3").End(xlDown).Row + 1 en >>
le message d'erreur : Erreur d'execution '6' : Dépacement de capacité
* si je remplace par "LigneAjout = Sheets("Base").Range("A2").Row + 1" ,
je n'ai pas le message d'erreur, tous s'enregistre, mais l'un sur l'autre
(sur la même ligne 3 de la feuille ("Base") à chaque changement de c
la deuxième boucle ne s'incrémente pas à priori !!!
et la première ne scan pas de h4 à h25 comme prévu ???




(cette formule est dans la feuille MO qui contient les valeur à recopier
dans la feuille("Base") )

Private Sub ValiderMO_Click()
Dim c As Variant, Lgn, LigneAjout As Integer, Poste, Nom, Code As String
'Saisie du nom de l'opérateur
Nom = InputBox("Saisir le Nom de l'opérateur de saisie : ", "Opérateur de
saisie", "")
If Nom = "" Then
MsgBox ("veuillez saisir votre nom")
End
End If
'lecture et récup des données de la colonne H de la feuille MO
'boucle de de H4 à H25 >> je ne suis pas sure que la boucle se
face bien ici de h4 à h25 ???
Range("H4").Select

For Each c In [H4:H25] '(c=Elèments identifiés)
If c > " " Then
' c.Select
Lgn = ActiveCell.Row '.Value
Poste = Range("H27").Value
Code = Cells(Lgn, "A").Value

'---------------------
'On Error Resume Next
Sheets("Base").Select
LigneAjout = Sheets("Base").Range("A2").Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom 'Nom saisie


Sheets("Base").Range("B" & LigneAjout).Value = Code 'Code 5M
Sheets("Base").Range("C" & LigneAjout).Value = Date 'DateSaisie
Sheets("Base").Range("D" & LigneAjout).Value = Poste ' Poste
Sheets("Base").Range("E" & LigneAjout).Value = c 'Elèments
identifiés
'Sheets("Base").Range("J" & LigneAjout).Value = Obs 'Observations

End If
Next
End Sub

"Steph_D" a écrit dans le message de news:
d9dlup$2ge$
"_PhilBab" a écrit dans le message de
news:d9dgf8$ku0$
Bonjour,
j'essaie d'utiliser cette formule :
for ....
if....then
LigneAjout = Sheets("Base").Range("A3").End(xlDown).Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom
....
end if
next
pour copier des valeurs dans une base
Mon problème, c'est quelle sélectionne que la dernière ligne d'Excel (n°
65xxxx)
que faire, je ne comprends pas, précédemment cela marchait ?

Merci.



Bonjour,

Xl doit considérer qu'il y a eu une action sur la dernière ligne du
classeur. Peut-être qu'après avoir exécuté la macro pour faire le ménage
trouvé sur Excelabo, votre macro fonctionnera de nouveau correctement.

Steph D.

Sub ménage()
'Jacques Chaussard et Denis Michon

Dim Sh As Worksheet
On Error Resume Next

For Each Sh In Worksheets
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireRow, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByRows, xlPrevious).EntireRow) _
.Offset(1, 0).Delete
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireColumn, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious). _
EntireColumn).Offset(0, 1).Delete
Next
ActiveWorkbook.Save
Set Sh = Nothing
End Sub






Avatar
_PhilBab
Bonjour Steph_D,
Apparemment, j'ai résolu ce problème en cherchant les autres réponses (fil
du 22/6 que je n'ai pas trouvé...
j'utilise : LigneAjout = Sheets("Base").Range("A65536").End(xlUp).Row + 1,

Merci encore.

"Steph_D" a écrit dans le message de news:
d9dlup$2ge$
"_PhilBab" a écrit dans le message de
news:d9dgf8$ku0$
Bonjour,
j'essaie d'utiliser cette formule :
for ....
if....then
LigneAjout = Sheets("Base").Range("A3").End(xlDown).Row + 1
Sheets("Base").Range("A" & LigneAjout).Value = Nom
....
end if
next
pour copier des valeurs dans une base
Mon problème, c'est quelle sélectionne que la dernière ligne d'Excel (n°
65xxxx)
que faire, je ne comprends pas, précédemment cela marchait ?

Merci.



Bonjour,

Xl doit considérer qu'il y a eu une action sur la dernière ligne du
classeur. Peut-être qu'après avoir exécuté la macro pour faire le ménage
trouvé sur Excelabo, votre macro fonctionnera de nouveau correctement.

Steph D.

Sub ménage()
'Jacques Chaussard et Denis Michon

Dim Sh As Worksheet
On Error Resume Next

For Each Sh In Worksheets
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireRow, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByRows, xlPrevious).EntireRow) _
.Offset(1, 0).Delete
Sh.Range(Sh.Cells.SpecialCells( _
xlCellTypeLastCell).EntireColumn, _
Sh.Cells.Find("*", , xlFormulas, _
, xlByColumns, xlPrevious). _
EntireColumn).Offset(0, 1).Delete
Next
ActiveWorkbook.Save
Set Sh = Nothing
End Sub