Compter nombre de retour chariot sur plusieurs cellules

Bonjour à tous,

Je vous explique ma situation.

Je fais un tableau excel avec les jours de la semaine (Lundi à vendredi).

Dans chaque cellule de la semaine, je vais marquer plusieurs informations avec des retours à la lignes.

Je souhaiterai effectuer un bouton "compter" qui permettrait de compter tous les retours à la lignes sur les cellules de la semaine (par exemple de C2 à G2) et ne pas compter les cases vides.

N'ayant aucune connaissance j'ai trouvé une formule VBA qui marche très bien, masis seulement pour une cellule !

Voici le code :

Function nbcaractere(var1 As String, var2 As String, Optional var3 As String) As Integer

Dim i As Integer, nb As Integer

nb = 1

For i = 1 To Len(var1)

If Mid(var1, i, 1) = var2 Or Mid(var2, i, 1) = var3 Then

nb = nb + 1

End If

Next

nbcaractere = nb

End Function

Sub Compter_saut_de_ligne()

Range("H2") = nbcaractere(Range("C2"), Chr(10), vbNewLine)

Range("H3") = nbcaractere(Range("C3"), Chr(10), vbNewLine)

Range("H4") = nbcaractere(Range("C4"), Chr(10), vbNewLine)

End Sub

Pouvez vous m'aider à faire en sorte que le code "Range("C2")" puisse prendre les informations de C2 à G2 svp ?

J'ai essayé plusieurs techniques, sans connaissance ... mais pas moyen :S.

Merci beaucoup à vous et bonne journée !

bonjour,

un essai

function cptrange(r,var2,var3)
for each c in r
nb=nb+nbcaractere(c,var2,var3)
next c
cptrange=nb
end function

Function nbcaractere(var1 As String, var2 As String, Optional var3 As String) As Integer
Dim i As Integer, nb As Integer
 nb = 1
 For i = 1 To Len(var1)
 If Mid(var1, i, 1) = var2 Or Mid(var2, i, 1) = var3 Then
 nb = nb + 1
 End If
 Next
 nbcaractere = nb
End Function

Sub Compter_saut_de_ligne()

Range("H2") = cptrange(Range("C2:G2"), Chr(10), vbNewLine)

End Sub

Ca ne marche pas =(

Erreur de compilation :

Type d'argument ByRef incompatible...

Il me surligne en jaune la premiere ligne....

Bonjour,

Une deuxième proposition.

Cdlt.

7chestercas.xlsm (19.28 Ko)
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim tbl As Variant
Dim Cell As Range, rng As Range
Dim dblCounter As Double

    Application.ScreenUpdating = False

    Set ws = ActiveSheet

    With ws
        Set rng = .Range("C2:H2")
        For Each Cell In rng
            If Not IsEmpty(Cell) Then
                tbl = Split(Cell.Value, Chr(10))
                dblCounter = dblCounter + UBound(tbl)
            End If
        Next
        .[H2] = dblCounter
    End With

    Set rng = Nothing: Set ws = Nothing

End Sub

Merci pour votre aide ! Mais ne marche pas non plus... Je vous joints le tableau peut etre que ça sera plus clair ...?

Re,

Une nouvelle proposition à tester.

Cdlt.

Super ! Ca prend vraiment forme

Par contre il faudrait qu'une ligne fasse 1. Par exemple les lignes avec écrit "standard" ou "simple" doivent compter pour 1 ligne. Et le problème que je vois c'est que par exemple sur la première personne nommé "Joel", les retours a la ligne ne s’additionnent pas sur tous les jours de la semaine... J'ai "3" alors que je devrais avoir "5"..

Merci encore de prendre le temps et ton aide précieuse

Re,

essaie simplement :

dblCounter = 1 + dblCounter + UBound(tbl)

Rien non plus... et avec ce code comment je fais pour déterminer les cellules a analyser et a remplir ?

Merci

Re,

Je ne comprends pas ce que tu écris.

Cdlt.

Excuse moi, je n'ai pas été clair ^^

Avec ce code simple que tu m'as donné, je ne vois pas où je peux indiquer a excel d'analyser les cellules "C2 à G2" pour le retour à la ligne, et où je peux lui indiquer la cellule où il va marquer le résultat. Exemple : 16 pour Joel en complexe et 10 en standard...

Mais bon, le code ne marche pas

Re,

La procédure balaie la plage de cellules C2:G40 définie dynamiquement par les variables lastCol et lastRow.

Cdlt.

Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim tbl As Variant
Dim lastRow As Long, lastCol As Long
Dim I As Long, J As Long
Dim dblCounter As Double

    Application.ScreenUpdating = False

    Set ws = ActiveSheet

    With ws
        lastRow = .Cells(Rows.Count, 3).End(xlUp).Row
        lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
        For I = 2 To lastRow
            dblCounter = 0
            For J = 3 To lastCol
                If Not IsEmpty(Cells(I, J)) Then
                    tbl = Split(Cells(I, J).Value, Chr(10))
                    dblCounter = 1 + dblCounter + UBound(tbl)
                End If
            Next J
            .Cells(I, 8) = dblCounter
        Next I
    End With

    Set ws = Nothing

End Sub

YOUHOUUUUU C'est parfait merci ENORMEMENT !!!!!

J'ai une derniere petite question, si je peux abuser de ta gentillesse

Comment je peux modifier ton bouton ? (texte etc...) Je n'ai pas la main comme sur les boutons "complexe" ou "standard"

Merci encore !!!

Re,

Tu as opté pour un contrôle de formulaire (Bouton).

J'ai opté pour un contrôle ActiveX (CommandButton).

Tu te mets en Mode Création, tu sélectionnes Propriétés dans le ruban (ou clic-doit et Propriétés).

Tu peux alors modifier un ensemble de propriétés de ce contrôle.

Cdlt.

Woaw c'est magique !!!

Merci énormément !

Je te souhaite une bonne soirée et de passer de bonnes fêtes

Re,

Merci.

Pense à clore le sujet.

Cdlt.

Re ! J'attendais le test complet du tableau afin de pouvoir clore le topic. Mis malheureusement le tableau ne comptabilise pas toutes les données après la cellule 19... Jai essayé de regarder le code et inutile de dire que je n'ai rien compris !!

En gros le tableau fonctionne parfaitement jusque là personne "Olivier" dans le tableau .

Désolé pour le retour et encore merci pour l'aide apportée

Bonjour,

Reprends mon fichier et note les résultats escomptés.

Cdlt.

Bonsoir,

Désolé pour le grand retard ! Noter le résultat escompté ? C'est à dire ?

Désolé , avant ces fêtes de fin d'années vous avez un noob d'excel ! Ce tableau est à titre professionnel et donc très important pour moi, merci de votre patience

Cordialement

Bonjour,

Tu reprends mon fichier et tu inscris les résultats que tu attends.

On constatera les erreurs à corriger.

Cdlt.

Rechercher des sujets similaires à "compter nombre retour chariot"