Userform / renseigner la base avec for.next sur plage nommée

Bonsoir à tous,

Léger problème avec un userform pour renseigner une base de données Excel.

La macro classique pour charger les données du formulaire vers Excel fonctionne bien :

Ex :

Private Sub CommandButton2_Click()
Dim derlign As Long
    With Worksheets(1)
        derlign = .Range("A" & Rows.Count).End(xlUp).Row + 1
'TxbNuméroaffaire ==> nom de la textbox correspondante
                .Cells(derlign, 1).Value = TxbNuméroaffaire
'Cbxcivilité ==> nom de la textbox correspondante
                .Cells(derlign, 2).Value = Cbxcivilité
        End With

End Sub

Mon fichier comporte beaucoup de plage nommée avec des calculs exécuté en VBA avec range("Nom").Cells(x;1).Value =; ce qui permet à l'utilisateur (seulement moi pour l'instant...) d'organiser ces colonnes comme il le souhaite. Cette première macro n'inscrit plus au bonne endroit lorsque l'on déplace les cellules concernées.

Cependant, je n'arrive pas à adapter la macro sus-mentionnée. Il ne se passe rien du tout quand je charge cette macro (que j'ai mis sur un autre commandbuttton) même pas un message d'erreur :

Private Sub CommandButton1_Click()
Dim x As Integer
Dim i As Long
i = Range("A65536").End(xlUp).Row

    For x = 2 To i
'N__de_l_affaire ==> nom de la première plage nommée 
    Range("N__de_l_affaire").Cells(x, 1).Value = TxbNuméroaffaire
'Civilité ===>nom de la deuxième plage nommée 
Range("Civilité").Cells(x, 1).Value = Cbxcivilité
    Next x

End Sub 

Auriez-vous une piste pour m'éclairer ? Je souhaite vraiment passer par mes plages nommées mais je cale là. Toutefois, à l'impossible nul n'est tenu ; en cas d'échec, je me résoudrai à utiliser la macro classique.

Merci d'avance,

Bien cordialement;

DIARRA Jules

Bonsoir

Une supposition

La colonne A est vide

Un conseil

Effectivement, j'aurai dû joindre un fichier. Je joins un fichier test avec 4 colonnes au lieu de la cinquantaine prévue mais je suppose que, si cela fonctionne pour quatre, par analogie, on peut étendre la macro à l'ensemble.

Dans le fichier joint, il y a toujours les entêtes, les données s'intègrent à la ligne (x+1 soit ligne 2 pour la première saisie)

La colonne A comprend les données : n° de l'affaire (plage nommée : "N__de_l_affaire")

La colonne B comprend les données : Civilité (plage nommée : "Civilité")

La colonne D comprend les données : Nom (plage nommée : "Nom")

La colonne C comprend les données : Nom (plage nommée : "Prénom")

Seulement, ces colonnes pourront être déplacées à l'avenir pour faciliter l'ordre de saisie ou le formulaire pourra être réorganisé mais les informations seront toujours demandées peu important la colonne ou l'ordre de saisie dans le formulaire.

J'ai réussi à utiliser les "Range" nommés pour effectuer des calcul ou de concatener avec next...for. On peut déplacer les colonnes, les macros tournent. Je viens de tester :

Private Sub CommandButton1_Click()
Dim x As Integer
Dim i As Long
i = Range("A65536").End(xlUp).Row

    For x = 2 To i
    Range("N__de_l_affaire").Cells(x, 1) = TxbNuméroaffaire ' sans .Value
    Next x

End Sub

Mais elle modifie toutes les lignes non vides à l'identique avec les informations saisies dans le formulaire. Je dois préciser que je nomme la colonne entière pour m'assurer que toutes les données fassent partie d'un range nommé.

Merci Banzaï,

J'espère que mon fichier t'aideras à me comprendre.

19test-userform.zip (9.78 Ko)

Bonjour

Julo a écrit :

Mais elle modifie toutes les lignes

Il faut supprimer la boucle

A tester

Effectivement, j'aurai du y penser.

Merci beaucoup en tout cas, Banzaï

A +

Julo

Rechercher des sujets similaires à "userform renseigner base next plage nommee"