Eviter la saisie de doublons

C'est une question récurrente lorsque l'on construit une petite base de données.

Voici une astuce utilisant Données Validations qui permet de gérer les doublons.

Il sufit de sélectionner la colonne (ici A), d'activer la validation (données), de sélectionner Personnalisé dans le menu déroulant et finalement d'ajouter la formule suivante:
=NB.SI(A:A;A1)< =1 2010-05-26 11h21_43
On notera que A1 n'a pas de $ afin que la formule se propage sur l'ensemble de la sélection.

Dès lors, si l'on veut entrer une donnée déjà saisie en colonne A, on a le message suivant:

2010-05-26 11h24_39

A bientôt

Gaetan

Ajouter un interrupteur pour la saisie de vos données

Pour éviter la saisie de données dans vos cellules, vous pouvez utiliser les outils de protection de feuilles, mais parfois cette solution n'est pas envisageable ou souhaitable.

Une alternative consiste à utiliser l'outil Données Validation, puis choisir personnalisée et entrer =FAUX.
De fait, on empèche la saisie de toute valeur.

Si on veut maintenant établir un interrupteur à l'échelle du classeur, on peut ajouter une feuille de paramètres, dans cette feuille, nommer une cellule (par ex. "Interrupteur_de_saisie" et lui attribuer la valeur =FAUX (on préférera la formule, notamment si on travaille à l'international).

2010-05-26 11h06_17

Il ne reste plus qu'à définir la validation de la cellule en utilisant le nom que l'on vient de définir :

2010-05-26 11h04_39

Et toute saisie sera interdite.

On peut gérer les messages indiquant que la saisie est interdite dans les autres onglets de la validation :

2010-05-26 11h07_39

Merci à Dominique Handelsman pour cette astuce.

A bientôt.

Gaetan

Comment, en VBA, ajuste la hauteur d’une ligne contenant des cellules fusionnées

Bonjour à tous,

Lorsque vous fusionnez des cellules pour pouvoir ensuite faire un alignement à gauche, il devient impossible d'ajuster correctement la hauteur de la ligne contenant ces cellules fusionnées (habituellement un double clic entre les deux lignes).

Voici un exemple.

Pour réussir à aboutir à ce résultat :
2010-05-17 11h53_19

Voici la macro de Jim Rech:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub AutoFitMergedCellRowHeight()
    Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
    Dim CurrCell As Range
    Dim ActiveCellWidth As Single, PossNewRowHeight As Single
    If ActiveCell.MergeCells Then
        With ActiveCell.MergeArea
            If .Rows.Count = 1 And .WrapText = True Then
                Application.ScreenUpdating = False
                CurrentRowHeight = .RowHeight
                ActiveCellWidth = ActiveCell.ColumnWidth
                For Each CurrCell In Selection
                    MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
                Next
                .MergeCells = False
                .Cells(1).ColumnWidth = MergedCellRgWidth
                .EntireRow.AutoFit
                PossNewRowHeight = .RowHeight
                .Cells(1).ColumnWidth = ActiveCellWidth
                .MergeCells = True
                .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _
                        CurrentRowHeight, PossNewRowHeight)
            End If
        End With
    End If
End Sub

A bientôt.

Gaetan