COMPTER DES CELLULES NON VIDES (VBA 2007)
Bonjour à tous et à toutes.
Je cherche à compter le nombre de cellules non vides cela via le VBA
Voici un extrait du code sur lequel je travaille:
Private Sub CommandButton1VALIDER_MODIF_Click()
'DESACTIVER et rendre INVISIBLE le bouton "ANNULER"
Me.CommandButton2ANNULER_MODIF.Enabled = False
Me.CommandButton2ANNULER_MODIF.Visible = False
Dim NbreDESTACT As Integer
Dim NbreDESTINF As Integer
'--- Contrôles
'VERIFICATION DU CHAMP "HEURE"
'EST-IL AU BON FORMAT (HH:MM) ?
If Not IsTime(TextBox44HEUREMODIF) Then
MsgBox "Saisir l'heure au format HH:MM !!!"
Me.TextBox44HEUREMODIF.Value = ""
Me.TextBox44HEUREMODIF.SetFocus
Exit Sub
End If
'VERIFICATION DES CHAMPS "DESTINATAIRE COURRIER ARRIVEE" "POUR ACTION" ET
'"DESTINATAIRES COURRIER DEPART" "ACTION"
'SONT-ILS RENSEIGNES ?
If Me.TextBox53_ARRACTIONMODIF = "" And Me.TextBox54DEPART_ACTION_MODIF01 = "" Then
MsgBox "Saisir un DESTINATAIRE", vbOKOnly + vbExclamation, "DESTINATAIRE"
Exit Sub
End If
'--- Positionnement dans la base =0=0=0=0=0=0=0=0=0=0=0 compter à partir de ce positionnement
ActiveCell.Offset(0, -3).Select
'--- Transfert Formulaire dans BD
'LA DATE
ActiveCell.Value = Me.DTPicker22_MODIF.Value
'L'HEURE
ActiveCell.Offset(0, 1).Value = Me.TextBox44HEUREMODIF.Value
'LA SOURCE
ActiveCell.Offset(0, 8).Value = Me.TextBox49_SOURCEMODIF.Value
'TYPE DE MSG
ActiveCell.Offset(0, 9).Value = Me.TextBox50_TYPEMODIF.Value
'MSG DEPART POUR ACTION
ActiveCell.Offset(0, 11).Value = Me.TextBox54DEPART_ACTION_MODIF01.Value
ActiveCell.Offset(0, 12).Value = Me.TextBox56DEPART_ACTION_MODIF02.Value
ActiveCell.Offset(0, 13).Value = Me.TextBox58DEPART_ACTION_MODIF03.Value
ActiveCell.Offset(0, 14).Value = Me.TextBox60DEPART_ACTION_MODIF04.Value
ActiveCell.Offset(0, 15).Value = Me.TextBox62DEPART_ACTION_MODIF05.Value
'MSG DEPART POUR INFO
ActiveCell.Offset(0, 20).Value = Me.TextBox55DEPARTinfoMODIF01.Value
ActiveCell.Offset(0, 21).Value = Me.TextBox57DEPARTinfoMODIF02.Value
ActiveCell.Offset(0, 22).Value = Me.TextBox59DEPARTinfoMODIF03.Value
ActiveCell.Offset(0, 23).Value = Me.TextBox61DEPARTinfoMODIF04.Value
ActiveCell.Offset(0, 24).Value = Me.TextBox63DEPARTinfoMODIF05.Value
'COMPTER LES CELLULES NON VIDES =0=0=0=0=0=0=0=0=0=0=0=0=0=0 VOICI LES LIGNES A PROBLEME
NbreDESTACT = WorksheetFunction.CountA(ActiveCell.Cells(0, 11), ActiveCell.Cells(0, 15))
NbreDESTINF = WorksheetFunction.CountA(ActiveCell.Offset(0, 20) & ":" & ActiveCell.Offset(0, 24))
'=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0
Select Case NbreDESTACT
Case Is = 1
Range("R" & derLig).Value = " - " & Range("L" & derLig).Value
Case Is = 2
Range("R" & derLig).Value = " - " & Range("L" & derLig).Value & Chr(10) & " - " & Range("M" & derLig).Value
Case Is = 3
Range("R" & derLig).Value = " - " & Range("L" & derLig).Value & Chr(10) & " - " & Range("M" & derLig).Value _
& Chr(10) & " - " & Range("N" & derLig).Value
Case Is = 4
Range("R" & derLig).Value = " - " & Range("L" & derLig).Value & Chr(10) & " - " & Range("M" & derLig).Value _
& Chr(10) & " - " & Range("N" & derLig).Value & Chr(10) & " - " & Range("O" & derLig).Value
Case Is = 5
Range("R" & derLig).Value = " - " & Range("L" & derLig).Value & Chr(10) & " - " & Range("M" & derLig).Value _
& Chr(10) & " - " & Range("N" & derLig).Value & Chr(10) & " - " & Range("O" & derLig).Value & Chr(10) & " - " & Range("P" & derLig).Value
End Select
Select Case NbreDESTINF
Case Is = 1
Range("S" & derLig).Value = " - " & Range("U" & derLig).Value
Case Is = 2
Range("S" & derLig).Value = " - " & Range("U" & derLig).Value & Chr(10) & " - " & Range("V" & derLig).Value
Case Is = 3
Range("S" & derLig).Value = " - " & Range("U" & derLig).Value & Chr(10) & " - " & Range("V" & derLig).Value _
& Chr(10) & " - " & Range("W" & derLig).Value
Case Is = 4
Range("S" & derLig).Value = " - " & Range("U" & derLig).Value & Chr(10) & " - " & Range("V" & derLig).Value _
& Chr(10) & " - " & Range("W" & derLig).Value & Chr(10) & " - " & Range("X" & derLig).Value
Case Is = 5
Range("S" & derLig).Value = " - " & Range("U" & derLig).Value & Chr(10) & " - " & Range("V" & derLig).Value _
& Chr(10) & " - " & Range("W" & derLig).Value & Chr(10) & " - " & Range("X" & derLig).Value & Chr(10) & " - " & Range("Y" & derLig).Value
End Select
'BAPTEME
ActiveCell.Offset(0, 25).Value = Me.TextBox51_BAPTEMEMODIF.Value
'OBJET
ActiveCell.Offset(0, 26).Value = Me.TextBox46OBJETMODIF.Value
'OBSERVATIONS
ActiveCell.Offset(0, 27).Value = "MODIFIE LE " & Now
'MSG ARRIVEE POUR ACTION
ActiveCell.Offset(0, 10).Value = Me.TextBox53_ARRACTIONMODIF.Value
'REPOSITIONNER DANS LA BASE
ActiveCell.Offset(0, 3).Select
End Sub
Après positionnement dans la base de données j'exécute les éventuelles modifications et à partir de cette position j'ai besoin de connaître le nombre de cellules NON VIDES des colonnes 11; 12; 13; 14; 15 de la ligne de positionnement initial.
Je souhaite compter les cellules NON vides
COMPTER LES CELLULES NON VIDES =0=0=0=0=0=0=0=0=0=0=0=0=0=0 VOICI LES LIGNES A PROBLÈME
'Pour les colonnes de 11 à 15
NbreDESTACT = WorksheetFunction.CountA(ActiveCell.Cells(0, 11), ActiveCell.Cells(0, 15))
'Pour les colonnes de 20 à 24
NbreDESTINF = WorksheetFunction.CountA(ActiveCell.Offset(0, 20) & ":" & ActiveCell.Offset(0, 24))
mais la syntaxe n'est pas bonne et donc le résultat est systématiquement FAUX
Qui peut m'indiquer la bonne syntaxe ?
MERCI D'AVANCE
CoutA veut une plage et n'a qu'un arguement
ça ça ne veut rien dire :
NbreDESTACT = WorksheetFunction.CountA(ActiveCell.Cells(0, 11), ActiveCell.Cells(0, 15))
ça c'est faux
NbreDESTINF = WorksheetFunction.CountA(ActiveCell.Offset(0, 20) & ":" & ActiveCell.Offset(0, 24))
remplace par
NbreDESTINF = WorksheetFunction.CountA(range(ActiveCell.Offset(0, 20), ActiveCell.Offset(0, 24)))
Merci pour cette solution
les deux lignes fonctionnent et donnent le bon résultats je vais pouvoir continuer merci
Merci EngueEngue
et bonne semaine à toi