VBA sélection multiple

Bonsoir à tous,

Sur une sélection multiple (nommée avec cellules non adjacentes)

en appuyant sur la touche "entrée", on passe d'une cellule à l'autre.

Peut-on faire la même chose en VBA ?

Bonne soirée

Claude.

Bonsoir, Claude

Sous VBA, il très rarement utile de "Sélectionner" une cellule.....

On peut très bien travailler dessus, sans la "Sélectionner", même s'il s'agit d'une zone de cellules non-adjacentes....

Aussi, le plus simple serait que tu poses clairement ta question, avec le résultait désiré....

Bonne soirée

Bonsoir félix,

En fait, je veux tester des cellules de (saisie obligatoire)

7 à 8 cellules dispersées

Si une de ces cellules n'est pas renseignée, Message et retour à la cellule fautive,

peut-être une boucle ou un exit sub ?

l'idée ci-dessous, mais codée comme il faut !

Range("f7").Activate

If ActiveCell = "" Then GoTo FIN

Range("f9").Activate

If ActiveCell = "" Then GoTo FIN

Range("f11").Activate

If ActiveCell = "" Then GoTo FIN

Range("c9").Activate

If ActiveCell = "" Then GoTo FIN

Range("c11").Activate

If ActiveCell = "" Then GoTo FIN

Range("c14").Activate

If ActiveCell = "" Then GoTo FIN

Exit Sub

FIN:

MsgBox ("Chanp " & ActiveCell.Offset(0, -1) & " Obligatoire")

Là, je me rends compte que je suis mal parti.

Si tu pouvais m'arranger çà

Dans plusieurs de tes fils, j'ai remarqué que tu n'apprécies pas les "Select", pourquoi ?

merci de m'aider sur ce coup là

amicalement

Claude.

Salut le forum

Claude une autre façon de traiter le problème

Sub Tester()
Dim Cellule

For Each Cellule In Array("F7", "F9", "F11", "C9", "C11", "C14")
    If IsEmpty(Range(Cellule).Value) Then
        MsgBox ("Champ " & Cellule & " Obligatoire")
        Range(Cellule).Activate
        Exit For
    End If
Next Cellule

End Sub

Mytå

Re-,

Claude,

sous VBA, un .Select ne peut servir, à la rigueur, que pour revenir sur une feuille, après traitement.....

Les .Select, freinent énormément le déroulement d'un code, et même un Application.ScreenUpdating à false ne peut améliorer la vitesse de traitement....

Pour ton souci, un contrôle par NBVAL (Application.Counta....) pourrait résoudre :

x = Application.CountA(Range("essai"))

Re,

Bonsoir, Mytå

Claude, du style :

If [essai].Count <> Application.CountA([essai]) Then
    MsgBox "Renseignez toutes les cellules"
    [essai].SpecialCells(xlCellTypeBlanks).Select
End If

Bonne soirée

Bonjour à tous,

Mytå, dans ce cas précis, je choisis ton code, qui cible bien les cellules (obligatoires) et

évite de nommer la plage.

J'ai remplacé Exit For par Exit Sub, fallait-il laisser les deux ?

felix,

If [Saisie].Count <> Application.CountA([Saisie]) Then
    [Saisie].SpecialCells(xlCellTypeBlanks).Activate
    MsgBox ("Champ  " & ActiveCell.Offset(0, -1) & " Obligatoire")
End If 

Jusqu'à présent, j'utilisais Application.CountA([Saisie]),

mais ne connaissais pas le : [Saisie].SpecialCells(xlCellTypeBlanks).Activate

Ces 2 solutions me seront utiles suivant les appli.

Je vous remercie tous deux,

Bonne journée

Claude.

Rechercher des sujets similaires à "vba selection multiple"