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

Compter le nb de retour chariot

5 réponses
Avatar
Jérémy
Bonjour =E0 tous!!

J'ai un programme qui remplace les retours chariots par des espaces
dans une feuille Excel (Voir ci-dessous)

Mais je voudrais, une fois le programme termin=E9, le nombre de retour
chariot trouv=E9s dans la feuille =E0 l'aide d'un msgbox par exemple.

Voici mon programme :
Sub retour_chariot()

Cells.Select

With Selection
.HorizontalAlignment =3D xlGeneral
.VerticalAlignment =3D xlBottom
.WrapText =3D False
.Orientation =3D 0
.AddIndent =3D False
.IndentLevel =3D 0
.ShrinkToFit =3D False
.ReadingOrder =3D xlContext
.MergeCells =3D False
End With


[A:IV].Replace What:=3DChr(10), Replacement:=3D" "
Range("a1").Select

End Sub

Merci pour votre aide

J=E9r=E9my

5 réponses

Avatar
docm
Bonjour.

Sub CompterEtRemplacer()

mavaleur1 = Chr(10)
MaValeur2 = " "

Range("a1").Select

Set Plage = Cells.Find(mavaleur1)

While Not Plage Is Nothing
Plage.Select
nbreDeCellules = nbreDeCellules + 1

debut = 1
a = ActiveCell.Value
b = InStr(debut, a, mavaleur1)
While b > 0
NbreRetourChariot = NbreRetourChariot + 1
debut = b + 1
b = InStr(debut, a, mavaleur1)
Wend

ActiveCell.Replace What:=mavaleur1, Replacement:=MaValeur2, LookAt:=xlPart,
_
SearchOrder:=xlByRows, MatchCase:úlse, SearchFormat:úlse, _
ReplaceFormat:úlse

Range("a1").Select

Set Plage = Cells.Find(mavaleur1)

Wend

msg = CDbl(NbreRetourChariot) & " retour(s) de chariot" & " dans " &
CDbl(nbreDeCellules) & " cellule(s)."

MsgBox msg

End Sub


"Jérémy" a écrit dans le message de news:

Bonjour à tous!!

J'ai un programme qui remplace les retours chariots par des espaces
dans une feuille Excel (Voir ci-dessous)

Mais je voudrais, une fois le programme terminé, le nombre de retour
chariot trouvés dans la feuille à l'aide d'un msgbox par exemple.

Voici mon programme :
Sub retour_chariot()

Cells.Select

With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With


[A:IV].Replace What:=Chr(10), Replacement:=" "
Range("a1").Select

End Sub

Merci pour votre aide

Jérémy
Avatar
JP25
Bonjour, tu peux aussi essayer cette sub qui évite de balyer toute ta
feuille

Sub retour_chariot()
ActiveCell.SpecialCells(xlLastCell).Select
a = ActiveCell.Column
b = ActiveCell.Row
Set Sele = Sheets(1).Range(Cells(1, 1), Cells(b, a))
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
For Each c In Sele
If c.Value = Chr(10) Then
c.Value = " "
n = n + 1
End If
Next
Range("a1").Select
MsgBox n
End Sub
--
Cordialement
JP25




"Jérémy" a écrit dans le message de news:

Bonjour à tous!!

J'ai un programme qui remplace les retours chariots par des espaces
dans une feuille Excel (Voir ci-dessous)

Mais je voudrais, une fois le programme terminé, le nombre de retour
chariot trouvés dans la feuille à l'aide d'un msgbox par exemple.

Voici mon programme :
Sub retour_chariot()

Cells.Select

With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With


[A:IV].Replace What:=Chr(10), Replacement:=" "
Range("a1").Select

End Sub

Merci pour votre aide

Jérémy
Avatar
MichDenis
Si tu écris ceci dans une cellule de la feuille, tu devrais obtenir
le nombre de cellules avec un retour à la ligne Car(10)
=NB.SI(A2:F10;"*" & CAR(10) & "*")

Si tu utilises l'objet "WorksheetFunction" de Application pour
obtenir la fonction de la feuille de calcul dans la fenêtre du code VBA

la ligne de code équivalente devrait être :
MsgBox Application.WorksheetFunction.CountA(Range("A2:F10"), "*" & Chr(10) & "*")
exécuter sur une feuille vierge, la fonction retourne 1 et non pas 0
quelqu'un a une explication ?

Pour les fins de l'expérience : (sur une feuille vierge)

Insère la formule en A1
En B1, tu insères du texte avec un retour à la ligne

La formule =1
la ligne de code = 2

Si tu ajoutes une valeur en D1 sans retour à la ligne
la formule = 1
la ligne de code = 3

Le résultat est celui attendu ?

Y-a-t-il quelqu'un sur ce forum qui a une explication ?
Avatar
docm
Bonjour.

Je crois que tu as mis CountA en lieu et place de CountIF

docm

"MichDenis" a écrit dans le message de news:

Si tu écris ceci dans une cellule de la feuille, tu devrais obtenir
le nombre de cellules avec un retour à la ligne Car(10)
=NB.SI(A2:F10;"*" & CAR(10) & "*")

Si tu utilises l'objet "WorksheetFunction" de Application pour
obtenir la fonction de la feuille de calcul dans la fenêtre du code VBA

la ligne de code équivalente devrait être :
MsgBox Application.WorksheetFunction.CountA(Range("A2:F10"), "*" & Chr(10)
& "*")
exécuter sur une feuille vierge, la fonction retourne 1 et non pas 0
quelqu'un a une explication ?

Pour les fins de l'expérience : (sur une feuille vierge)

Insère la formule en A1
En B1, tu insères du texte avec un retour à la ligne

La formule =1
la ligne de code = 2

Si tu ajoutes une valeur en D1 sans retour à la ligne
la formule = 1
la ligne de code = 3

Le résultat est celui attendu ?

Y-a-t-il quelqu'un sur ce forum qui a une explication ?





Avatar
MichDenis
Merci Docm,

Tu as mis le doigt sur le bobo !

Il y a des jours comme ça où c'est plus difficile !

;-))



"docm" a écrit dans le message de news:
Bonjour.

Je crois que tu as mis CountA en lieu et place de CountIF

docm

"MichDenis" a écrit dans le message de news:

Si tu écris ceci dans une cellule de la feuille, tu devrais obtenir
le nombre de cellules avec un retour à la ligne Car(10)
=NB.SI(A2:F10;"*" & CAR(10) & "*")

Si tu utilises l'objet "WorksheetFunction" de Application pour
obtenir la fonction de la feuille de calcul dans la fenêtre du code VBA

la ligne de code équivalente devrait être :
MsgBox Application.WorksheetFunction.CountA(Range("A2:F10"), "*" & Chr(10)
& "*")
exécuter sur une feuille vierge, la fonction retourne 1 et non pas 0
quelqu'un a une explication ?

Pour les fins de l'expérience : (sur une feuille vierge)

Insère la formule en A1
En B1, tu insères du texte avec un retour à la ligne

La formule =1
la ligne de code = 2

Si tu ajoutes une valeur en D1 sans retour à la ligne
la formule = 1
la ligne de code = 3

Le résultat est celui attendu ?

Y-a-t-il quelqu'un sur ce forum qui a une explication ?