Microsoft 365 excel vba

  • Initiateur de la discussion Initiateur de la discussion PHV62
  • Date de début Date de début
  • Mots-clés Mots-clés
    vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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

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.
 
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. 😱 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.🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
591
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
872
Réponses
5
Affichages
260
Retour