Macro -erreur 1004

Bonjour,

Je suis désespéré. J'utilise que très rarement les macros et j'ai très peu de connaissance. Je cherche à copier mon formulaire dans ma liste pour quand j'ajoute un nom et idéalement j'aurais aussi voulu pouvoir inscrire un nom et les infos et pouvoir également supprimer la ligne dans la liste mais je crois que c'est trop pousser. Dans ma macro, je pars de mon formulaire pour aller dans ma liste, j'insère une ligne à la ligne 2 et ensuite copie/coller chacune des cellules de mon formulaire dans ma liste. Quand je joue la macro, il me dit toujours erreur mais ajoute quand même ma ligne dans la liste. Pourquoi j'ai un erreur alors… je voudrais faire disparaître le message d,erreur.

Merci à l'avance !!!

chacha

Bonjour Chacha

Rang("A1") select ' Bon

ActiveCell.Offset(-8, 0).Select ' Bon décalages depuis la cellule active

Explications données par RAJA dans ce forum : ( Activate ou Select)?

Ces 2 méthodes n'ont pas la même finalité. Par exemple, pour sélectionner une cellule ou une plage de cellules, on utilise la méthode Select. Mais, pour activer une seule cellule ou feuille ou classeur, on utilise la méthode Activate. Tu ne peux pas par exemple utiliser la méthode activate pour activer une plage de cellules.

Quand tu sélectionnes une plage de cellules, une cellule est activée qui du coup devient cellule active (activecell). Souvent la méthode activate intervient ou elle est déjà effective avant la méthode select. Par exemple, une feuille doit être activée ou est déjà active avant que tu n'utilises la méthode select.

Donc, ce n'est une question d'éviter l'une ou l'autre méthode, cela dépend uniquement ce que tu veux faire. Ceci dit tu n’es pas toujours obligé d'utiliser la méthode select pour effectuer un certain nombre de choses. Tu peux par exemple faire référence à une plage de cellules sans les sélectionner auparavant.

Cdt Toukoul

Bonjour Toukoul !!!!!!!!!!!!!!!

Wowwwww Merci beaucoup , C'est trop gentil !!!!!!!!!! Je me demandais s'il y avait moyen que quand j'appuie sur le bouton de la macro, la ligne s'ajoute dans ma liste à la ligne 2, au début ? Et est -ce que je peux trier par ordre alphabétique ?

Merci ChaCha

Bonjour Chacha

voici une procédure qui fait votre demande,sans aucun contrôle des saisies

Cdt

Excellent, ça fonctionne super bien !!!!

Est ce qu'il y a moyen que je puisse aussi mettre un bouton dans mon formulaire pour quand je remplis mes champs et que je veux supprimer cette ligne d'information dans ma liste ? Peut-être que je rêve un peu en couleur… mais tout d'un coup que c'est possible !

Chacha

Bonjour CHACHA

Supprimer une ligne directement dans la liste des patients

Cdt

Toukoul,

Un GROS gros merci !!!!!!!! j'ai vu le piton dans la page deux mais je n'ai pas encore réussi à le faire marcher car j'ai un message d'erreur. Par contre, j'aurais une dernière question !!! J'ai essayé beaucoup chose pour changer la macro mais je crois que j'ai encore beaucoup à apprendre car rien à faire… l'ajoute d'une colonne détruit la macro.

Je voudrais ajouter une dernière colonne au tout début de la liste avant nom du patient pour avoir une séquence de 1 à 100 par exemple. Je voudrais à chaque fois que j'ai un nouveau nom dans ma liste, avoir un nouveau numéro qui apparaît. J'appellerais ma colonne Nombre de patients. J'ai déjà 72 noms dans ma liste donc j'utiliserais 1 à 72 et ensuite à l'ajout d'un patient, je continuerais la séquence donc 73...

Ex:

1 DIDIER

2 BOUBOU

3 BÉBÉ

MERCI !!!!!!!!!!!!!!!!!!! Je suis en train de prendre un cour pour les macros, Ce que tu me montres est fascinant.

Chacha,

pourriez vous m'expliquer le but de ce rajout de colonne,

n'oubliez pas que vous pouvez supprimer des lignes, donc le N° qui lui serait associé!

Comme deux clients ne doivent pas porter le même N° il faudra gérer ces N° qui seront rapidement trop nombreux.

Le N° de dossier ne pourrait-il pas contenir cette information?

merci

Allo Toukoul,

Vraiment désolé du délai. J'ai vraiment besoin de l'ajout de la colonne au début car celle-ci fera le compte de chacune personne dans la liste. C'est sûre que la colonne de numéro (1 à 75...) devra être en ordre et je sais que quand je vais ajouter les noms, l'ordre alphabétique va changer. Ce qui fait que c'est plus compliquer. Je sais pas comment faire mais j'ai vraiment besoin de cette colonne pour savoir que j'ai 75 noms dans ma liste. Cette liste sera imprimé. Je ne peux pas faire ce suivi avec le numéro de dossier. Est ce que vous pouvez m'aider ?

Bonjour CHACHA,

Voila un fichier qui cumule toutes vos demandes

Cdt Toukoul

Toukoul!!!

C'est magnifique !!!!!!!!!!!!! Toute est parfait mais j'aurais une dernière petite demande. Est ce qu'il serait possible qu'une fois que j' appuie sur le bouton ajout de nouveau patient dans le formulaire, que les 5 champs s'efface automatiquement pour que je puisse rentrer de nouvelle information?

Merci !!! encore et mon dieu que ceci me sera pratique !!!

Bonjour toutes et tous

merci à Toukoul

ci joint avec possibilité d'effacer si cellule C8 est vide avec un message Msgbox 'Vide!' puis, se place directement sur la cellule C8

une deuxième demande en message (Msgbox) au cas où! si l'on souhaite ajouter les données saisies sur l'autre feuille du classeur (annuler ou ok)

@tester @améliorer

Spoiler
Sub RajouterPatientLign6()
Dim DerLig As Long
Dim X As Long

If Sheets("Formulaire").Range("c8").Value = "" Then
MsgBox "Champ Nom du patient est vide!"
Range("c8").Select
Else
With Sheets("Formulaire")
    If MsgBox("Etes-vous certain(e) de vouloir supprimer le contenu du tableau ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Range("C8,e8,c12,e12,c16").ClearContents
        MsgBox "Effacé !"
        Else

'Stop
Application.ScreenUpdating = False
Sheet2.Select
    Rows("6:6").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 With Sheet1
 Sheet2.Range("b6").Value = .Range("C8").Value
 Sheet2.Range("c6").Value = .Range("E8").Value
 Sheet2.Range("d6").Value = .Range("C12").Value
 Sheet2.Range("e6").Value = .Range("E12").Value
 Sheet2.Range("f6").Value = .Range("C16").Value
 End With
 With ActiveWorkbook.Worksheets("Listepatients").ListObjects("Table2").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("G2").Select
 DerLig = Sheet2.Cells(Rows.Count, 2).End(xlUp).Row
 For X = 6 To DerLig
 Sheet2.Cells(X, 1).Value = X - 5
 Next X
Application.ScreenUpdating = True

    End If

    End With
 End If
End Sub

ici pour les boîtes de dialogue (MsgBox) au cas ou :

https://www.excel-pratique.com/fr/vba/boites_de_dialogue

crdlt,

André

Bonjour André, Merci pour l'aide que tu m'as apporté. J'ai un petit problème par contre car quand je réponds que je veux supprimer, je voudrais pouvoir dire OUI et que l'information qui est dans les champs se transpose dans la liste (onglet 2) et ensuite, les 5 champs s'effacent. Comme ça , je peux par la suite rentrer un nouveau patient sans avoir à effacer les champs et surtout je ne le mets pas en double dans mon onglet deux par inadvertance. Pour le moment, quand je réponds OUI, je veux effacer, les champs s'effacent mes l'infos des 5 champs ne se met dans l'onglet 2. J'ai essayé d'apporter moi même la modification mais je suis pas capable. Pouvez vous m'aider ?

Rechercher des sujets similaires à "macro erreur 1004"