Gestion d'un formulaire de saisie

Bonjour,

J'ai un lourd travail à faire sur des tableaux qui doivent se remplir quasi d'eux-mêmes et j'ai un petit soucis sur l'un d'entre eux.

Pour prévenir cela ne fait que une semaine que j'ai commencé le VBA donc il est possible que je comprenne pas tout.

Alors mon problème ;

J'ai un premier tableau qui va être rempli via un userform, la personne clique sur un premier paramètre qui va déterminer la colonne où les données vont être saisies, ensuite la personne sélectionne les données, j'ai utilisé des checkbox car il s'agit d'une série de A1 à A12, B1 à B12 et C1 à C12 (ce ne sont pas des cellules hein ^^) et chaque cellule pourra contenir plusieurs paramètres (ex: A1 ; A2 ; B6 ; C12).

Pour l'instant ici tout fonctionne.

C'est le deuxième tableau qui doit se remplir automatiquement grâce aux paramètres saisis et surtout la ligne où ceux-ci sont entrés.

If Range("h23").Value Like "*1*" Or Range("j23").Value Like "*1*" Or Range("l23").Value Like "*1*" Or Range("n23").Value Like "*1*" Then
    Sheets("Prelevts").Range("B10") = "Bryophytes"
If Range("h23").Value Like "*2*" Or Range("j23").Value Like "*2*" Or Range("l23").Value Like "*2*" Or Range("n23").Value Like "*2*" Then
    Sheets("Prelevts").Range("B11") = "Bryophytes"
If Range("h23").Value Like "*3*" Or Range("j23").Value Like "*3*" Or Range("l23").Value Like "*3*" Or Range("n23").Value Like "*3*" Then
    Sheets("Prelevts").Range("B12") = "Bryophytes"
If Range("h23").Value Like "*4*" Or Range("j23").Value Like "*4*" Or Range("l23").Value Like "*4*" Or Range("n23").Value Like "*4*" Then
    Sheets("Prelevts").Range("B13") = "Bryophytes"
    End If
    End If
    End If
    End If

J'utilise ce code qui n'est pas complet. Ainsi si h23, j23, l23 ou n23 contient un 1, la première ligne de mon second tableau doit se remplir du nom bryophytes (un des supports). Si h23, blabla, contient un 2, la seconde ligne de mon second tableau doit aussi se remplir avec bryophytes, et ainsi de suite jusqu'à 12.

Donc si j'ai dans ma cellule H23 : A1; A4, je dois retrouver dans mon second tableau au ligne 1 et 4, le mot "bryophytes"

Et surtout j'ai encore d'autres supports que bryophytes, j'en ai 16 et accessoirement les lettres (A, B et C) doivent aussi remplir une cellule mais ça on verra après ^^

Le problème c'est que c'est long, et je suis sûr qu'il y a moyen de réduire tout ça avec des variables ou autres.

Voilà, j'espère avoir été le plus clair possible car je ne peux pas partager le classeur car il contient des données non divulguables.

En remerciant pour la future aide apportée.

bonjour,

une proposition de simplification de l'écriture. (non testé)

    For i = 1 To 12
        For j = 1 To 4
            If Cells(23, j + 7) Like "*" & i & "*" Then Sheets("Prelevts").Cells(9 + i, 2) = "Bryophytes": Exit For
        Next j
    Next i

Et dire que j'ai tapé je sais pas combien de fois ces petits For to et next sans résultat ^^

Comme quoi on devient pas expert en une semaine ^^

Un grand merci, je reviendrais une fois complété avec tous les paramètres

Sinon une idée pour les lettres, que quand il y a un A on obtient dans le deuxième tableau sur la bonne ligne dans la colonne F un A

Exemple si on mets A6 ; A9; on a dans le deuxième tableau un A sur la 6e ligne (F15) et la 9e ligne (F18)

Là j'avoue je vois même pas quelle code tapé pour arriver à un tel résultat ^^

bonjour,

pour la cellule en ligne i colonne j, (à nouveau non testé)

    If InStr(Cells(i, j), "A") > 0 Then
        Sheets("prelevts").Cells(Replace(Cells(i, j), "A", "") + 9, "F") = "A"
    End If

Sur ce coup là, il y a un message d'erreur sur la ligne

Sheets("prelevts").Cells(Replace(Cells(i, j), "A", "") + 9, "F") = "A"

Après j'ai peut-être mal inséré le code

 For i = 1 To 12
        For j = 1 To 4
            If Cells(23, j + 7) Like "*" & i & "*" Then Sheets("Prelevts").Cells(9 + i, 2) = "Bryophytes": Exit For
            If InStr(Cells(i, j), "A") > 0 Then
        Sheets("prelevts").Cells(Replace(Cells(i, j), "A", "") + 9, "F") = "A"
    End If
        Next j
    Next i
End Sub

Et j'ai testé avec un second paramètre et ça ne fonctionne pas, une idée de mon erreur ?

    For i = 1 To 12
        For j = 1 To 4
            If Cells(23, j + 7) Like "*" & i & "*" Then Sheets("Prelevts").Cells(9 + i, 2) = "Bryophytes": Exit For
            If Cells(24, j + 7) Like "*" & i & "*" Then Sheets("Prelevts").Cells(9 + i, 2) = "Hydrophytes": Exit For
        Next j
    Next i
End Sub

Bonjour,

Quels messages d'erreurs ?

pour le premier cas, si c'est une erreur 13 (c'est que cells(i,j) contient un A mais ne contient pas un nombre lorsque l'on enlève le A.

pour le deuxième cas, difficile de dire sans voir tes données. tu dis que cela ne fonctionne pas, quel est le résultat attendu et quel est le résultat obtenu ?

conclusion: mets-nous un fichier pour t'aider à t'aider. (je t'invite aussi à jeter un oeil sur ma signature)

Il s'agit en effet du message d'erreur 13.

Ok je vous le transmets.

22test.xlsm (28.90 Ko)

Alors dans la première feuille, il y a un bouton "saisie données" et c'est là qu'on sélectionne la colonne où sera inscrit les différents A1, A2 etc... selon le substrat ; bryophytes, hydrophytes, etc...

Ici j'ai déjà un petit soucis car les A... s'inscrit très bien dans les colonnes pour le substrat bryophytes mais une fois que j'ajoute une nouvelle ligne pour hydrophytes, et bien rien ne s'inscrit dans cette ligne.

Et donc le sujet principal ici est donc de faire que quand il y a A1 en bryophytes, dans la deuxième feuille "Prelevts" il y ait bryophytes qui s'inscrivent dans la ligne 1 (ce que tu as déjà fournis et fonctionne) et la lettre A.

Mais lorsque par exemple B1 est écrit en hydrophytes, hydrophytes ne s'affiche pas dans la deuxième feuille.

Merci de ton aide en tout cas.

Bonjour,

ta demande d'aide devient "aide-moi à mettre au point la gestion d'un formulaire de saisie pour mon problème".

Ceci ne m'intéresse pas, je passe la main.

Pour les problèmes que tu mentionnes, le fichier que tu as fourni ne permet pas de les reproduire (pas la bonne macro dans le fichier).

Ah, bien dommage :/ tu aurais peut être une idée pour résoudre l'erreur 13?

Je remets le fichier avec ce que tu m'a fourni précédemment mais j'ai vérifié et la macro est exactement la même que celle de mon fichier originale.

29test.xlsm (31.59 Ko)

Bonjour,

quelle séquence d'opérations faut-il faire pour obtenir le message d'erreur ?

Il faut cliquer "saisie données" sur la première feuille et cocher l'un des 4 optionbutton et ensuite cocher une ou plusieurs checkbox dans l'onglet Bryophytes vu que hydrophytes ne fonctionne pas, puis valider.

Bizarrement je viens de retester il n'y a plus le message d'erreur, c'est à devenir dingue. Il y a juste cette ligne qui donne rien

If InStr(Cells(i, j), "A") > 0 Then
        Sheets("prelevts").Cells(Replace(Cells(i, j), "A", "") + 9, "F") = "A"
    End If
Rechercher des sujets similaires à "gestion formulaire saisie"