Microsoft 365 excel vba

PHV62

XLDnaute Junior
L = Sheets("VIART").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("B" & L).Value = TextBox25
Range("A" & L).Value = TextBox25
Range("F" & L).Value = TextBox26
Range("G" & L).Value = TextBox27

DernLig = Range("C" & Rows.Count).End(xlUp).Row + 1
num = Range("C" & Rows.Count).End(xlUp)
Range("C" & DernLig).Value = num + 1
bonjour voici ma formule elle fonctionne si je rempli les textbox
par contre si je ne remplie pas les textbox elle a ajout quand même num+1 alors comment faire pour que ca ne compte pas

merci pour votre réponse
phv62
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour PHV,

On incrémente si au moins une Textbox est non vide :
VB:
If Range("B" & L) <> "" Or Range("A" & L) <> "" Or Range("F" & L) <> "" Or Range("G" & L) <> "" Then
    Range("C" & DernLig).Value = num + 1
End If

On incrémente si aucune Textbox n'est vide :
Code:
If Range("B" & L) <> "" And Range("A" & L) <> "" And Range("F" & L) <> "" And Range("G" & L) <> "" Then
    Range("C" & DernLig).Value = num + 1
End If
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour PHV,
Ca, c'est du Userform ! :)
Je ne suis pas vraiment sur d'avoir tout suivi, alors j'ai fait d'après ce que j'ai compris.
Mon code commence par "Addon Sylvanu", faites Ctrl F pour le trouver car c'est un peu ... fouillis.
J'ai rajouté :
VB:
' Addon Sylvanu
Private Sub CommandButton3_Click()

Dim L%, N%, DernLig%, num%
Sheets("FEUIL1").Activate

If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbNo Then Exit Sub 'On sort si réponse NON

L = Sheets("FEUIL1").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
If TextBox1 <> "" Then                                  'Si il y a un nom
    ' On range les infos avec le Nom
    Range("A" & L).Value = TextBox1.Text
    Range("B" & L).Value = TextBox1.Text
    DernLig = Range("C" & Rows.Count).End(xlUp).Row + 1
    num = Range("C" & Rows.Count).End(xlUp)
    Range("C" & DernLig).Value = num + 1
    ' On regarde chaque Textbox des enfants
    For N = 25 To 55 Step 5                             ' N : N° du textbox, de Textbox25 à Textbox55 de 5 en 5
        If Controls("TextBox" & N).Text <> "" Then      'Si la textbox n'est pas vide
            L = Sheets("FEUIL1").Range("a65536").End(xlUp).Row + 1
            Range("A" & L).Value = Controls("TextBox" & N).Text
            Range("B" & L).Value = Controls("TextBox" & N).Text
            ' Autre rangement à faire si besoin
            DernLig = Range("C" & Rows.Count).End(xlUp).Row + 1
            num = Range("C" & Rows.Count).End(xlUp)
            Range("C" & DernLig).Value = num + 1
            TransfertData (L)
        End If
    Next N
End If
End Sub
Quand on entre un Nom et 7 enfants, il insère bien les bonnes données au bon endroit ( enfin je pense ).
Si un nom est absent il passe au suivant sans rien faire.
Pour la partie sans fin ...
Code:
Range("F" & L).Value = TextBox5
Range("G" & L).Value = TextBox6
...
...
Range("DG" & L).Value = TextBox110
Range("DH" & L).Value = TextBox111
Je l'ai remplacé par :
Code:
Sub TransfertData(L)
Dim i%
With Sheets("FEUIL1")
    L = .Range("a65536").End(xlUp).Row + 1
    For i = 5 To 111                        ' Transfert de TextBox(i) dans Cellule(i+1,L).
        .Cells(i + 1, L) = Controls("TextBox" & i).Text
    Next i
End With
End Sub
'-----------------------------------------------------
Ce qui est plus simple.
Le fait de passer par une Sub permet d'aérer le code et le rendre plus lisible.
Donc à voir si ça fait à peu près ce que vous voulez, mais le code est simple à reprendre. C'est une bonne base je pense.
 

Pièces jointes

  • GENEA test (V2).xlsm
    599.4 KB · Affichages: 15

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour PHV,
Désolé chez moi ça marche.
En F on met Date de naissance textbox5
En G on met Ville de naissance textbox6
En AF on met Date de naissance2 textbox31
En AG on met Ville de naissance2 textbox32
J'ai vérifié plusieurs fois, ça marche dans tous les cas sur ce point avec votre PJ.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
avec les textbox 31 et 32 et ne marquant pas les textbox 26 27
Donc ce n'est plus 31,32,26,27 mais 5,6,25,26. :eek: Difficile de vous suivre.

J'ai mis 3 enfants avec NOM1,2,3 et j'ai bien Enfant1 en Z , Enfant2 en AE et enfant3 en AJ.

Si c'est faux, il vous faut reprendre les affectations.
Cela veut dire que dans votre liste certaines affectations sont fausses.
Mais vous êtes le seul à pouvoir corriger en fonction de ce que vous attendez.

Pour moi ce ne sont que des TextBox sans signification avec transfert dans un tableau.:)
 

Statistiques des forums

Discussions
312 023
Messages
2 084 715
Membres
102 637
dernier inscrit
TOTO33000