Compter les cellules de ma selection

Je viens de faire un planning de réservations mais je rencontre 2 difficultés avec des macros (en effet, je ne connais pas le VBA ) :

La principale :

En case A22 j'aurais voulu connaitre le nombre de jours de ma selection seulement si ma selection est dans mon tableau (E6:ABI9)

Exemple 1 je selectionne P6 je souhaite avoir 4 dans la cellule A22

Exemple 2 je selectionne H6:I9 je souhaite avoir 4 dans la cellule A22

Exemple 3 je selectionne J9 je souhaite avoir 1 dans la cellule A22

etc…

En français : si la selection est dans mon tableau (E6:ABI9) alors afficher le résultat (en A22) de "mon nombre de ligne x (mon nombre de colonnes / 2) sinon rien (ou 0)

La deuxième interrogation concerne la vérification de données entre 2 cellules et l'affichage d'un message d'erreur.

Je joins un fichier allégé pour que ce soit plus simple. Ce que j'aimerais est noté dedans.

D'avance merci !

13reservations.xlsm (56.35 Ko)

Bonjour,

essaie ceci, la macro s'active dès que tu sélectionnes une ou plusieurs cellules.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set rc = Application.Intersect(Range("E6:ABI9"), Target)
[A22] = rc.Count / 2
End Sub
12reservations.xlsm (59.85 Ko)

Tout d'abord merci car c'est presque parfait !

En effet le chiffre qui apparait est bon mais si je sélectionne en dehors de mon tableau j'ai un message d'erreur.

La même chose sans cette erreur et ce serait parfait (soit pas de calcul en dehors du tableau soit valeur 0 dans A22).

Et si quelqu'un a une idée pour mon deuxième problème je suis toujours preneur.

Bonjour,

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set rc = Application.Intersect(Range("E6:ABI9"), Target)
if rc is nothing then
[A22] = rc.Count / 2
else
 [A22]=0
end if
End Sub

On se rapproche lol

Si je remplace l'ancien code par ce nouveau code, je n'ai plus de message d'erreur MAIS le chiffre qui s'affiche dans A22 est le résultat de ma dernière sélection et non 0.

re-bonjour,

désolé, essaie cette version-ci

ai corrigé sans tester et devais avoir la tête ailleurs.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set rc = Application.Intersect(Range("E6:ABI9"), Target)
if rc is nothing then
[a22]=0
else
[A22] = rc.Count / 2
end if
End Sub

Re,

Toujours pas ça... Voir pire ! Dans ce cas message d'erreur et résultat faux.

Merci quand même, si personne ne trouve pas je me contenterais de la première proposition.

Re,

Après correction de ton ancien message : ça fonctionne !! Top !

Merci !

Le bon code est donc :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Set rc = Application.Intersect(Range("E6:ABI9"), Target)
    if rc is nothing then
    [a22]=0
    else
    [A22] = rc.Count / 2
    end if
    End Sub

re-Bonjour

j'ai fait la correction dans mon message précédent.

La réponse à ma première question est parfaite !

Merci bien !

Pour ma deuxième question, j'ai improvisé autrement...

Encore merci !

Rechercher des sujets similaires à "compter selection"